У Моторолы Razr была еще реклама с приблизительно следующим сюжетом, насколько помню: пляж, солнце, всюду полуобнаженные ленивые тела, никакой одежды, где можно было бы спрятать свою мобилу. Вдоль линии моря идёт девушка в бикини. И тут шок: звонок сотового потряс окрестности! Все в недоумении: «Но как???» И девушка небрежно открывает свой Razr. ))
Была исходная статья — решето на дельфях, процедурная реализация, простыня. Я написал реализацию в три строчки. Вот и вся демонстрация. Считаю, исчерпывающая. Замеры времени — просто для ориентировки, скажем, я ни на секунду не сомневаюсь, что в дельфях, при прочих равных, крутиться будет быстрее.
Код написан ясно, откомментирован и изначально без претензии на первые места в конкурсе на скорость поиска простых чисел.
Какие возможности показаны? Циклы, массивы и замыкания?
Показаны возможности, достаточные для решения конкретной задачи наименьшим количеством кода. Фильтров не показал, да.
Спасибо за комментарий, но я изначально не гнался за эффективностью выполнения. Да, звучит странно, согласен. Скорее, это программирование ради программирования и демонстрация возможностей Swift. Зато тут вся реализация заключена в трех строчках в цикле while, включая условие выхода. Да, и такие простыни хорошо бы в спойлер.
И насчёт тормозов. Может и так, как вы говорите, но тормоза возникали еще на этапе цикла, когда справа отображалось количество исполнений. До отображения результатов.
«Из коробки» у таймера нет функционала pause/resume. Из этого следует вывод, что на «паузе» нужно делать invalidate() (если он добавлен в RunLoop) и обнулять его, а на «возобновить» — создавать его вновь, учитывая состояние, в котором он был в момент паузы.
Запустите приложение. В этом конкретном случае эффект будет неочевиден (у нас только один таймер), однако в реальной ситуации нескольких таймеров ваши пользователи получат более отзывчивый интерфейс и приложение будет более энергоэффективным.
Посмотрите повнимательнее логику создания таймера и метод, который который он вызывает при срабатывании, все станет ясно.
Код написан ясно, откомментирован и изначально без претензии на первые места в конкурсе на скорость поиска простых чисел.
Показаны возможности, достаточные для решения конкретной задачи наименьшим количеством кода. Фильтров не показал, да.
И насчёт тормозов. Может и так, как вы говорите, но тормоза возникали еще на этапе цикла, когда справа отображалось количество исполнений. До отображения результатов.
Да как следует многословнее стало, да.
Посмотрите повнимательнее логику создания таймера и метод, который который он вызывает при срабатывании, все станет ясно.
Extensions