Swift vs Objective-C vs Си

Разработчик из Сан-Франциско, Джесси Сквайрс (Jesse Squires), опубликовал в своем блоге сравнительные результаты тестирования приложений, написанных на трех разных языках программирования: Swift, Objective-C и Си.

Напомним, что первый из них был анонсирован разработавшей его Apple в первый день WWDC 2014, и вместе с графическим интерфейсом Metal (который согласно компании демонстрирует 10-кратный прирост графической производительности по сравнению с традиционным OpenGL) стал главным событием этой конференции (хотя большинство обычных пользователей яблочной продукции возможно больше заинтересовала презентация OS X Yosemite и iOS 8). Swift пришел на смену Objective-C — языка программирования, ставшего объектно-ориентированным расширением процедурного языка Си и используемого разработчиками платформ Apple аж с 1983 года. Таким образом, выход Swift ознаменовал завершение 21-летней эпохи языка Objective-C. Неудивительно, что на новичка (имя которого в переводе на русский звучит как «быстрый») возлагаются большие надежды. И судя по результатам проведенных Джесси Сквайрсом испытаний, эти надежды всецело оправдываются.

Быстродействие языков тестировалось путем замера скорости сортировок, алгоритмы которых были написаны на всех трех языках. Главный интерес представляют результаты по Swift и Objective-C, классический Си использовался как своего рода критерий. Скорость выполнения написанных на нем программ благодаря низкому, приближающемуся к машинному, уровню абстракции, является очень высокой по сравнению с языками высокого уровня (к категории которых относятся Swift и Objective-C). Те в меньшей степени учитывают особенности компьютерного железа, удобнее в написании прикладных программ, но по этой же причине медленнее работают.

Результаты испытаний варьируют в зависимости от заданных уровней оптимизации при компиляции исходного кода, а также бета-версий Xcode 6 — интегрированной среды разработки под операционные системы OS X Yosemite и iOS 8. В ранних первых тестах, начиная со 2-ой бета-версии Xcode 6, при отключенной или установленной по умолчанию стандартной оптимизации, Swift вчистую проиграл своему предшественнику, обойдя его только при самом высоком (т.е. более быстродействующем, но и в большей степени подверженном ошибкам) уровне оптимизации кода. В следующих тестах, с очередными бета-версиями Xcode 6 (5-ой и 6-ой), быстродействие Swift значительно возросло: по-прежнему значительно уступая Objective-C при отключенной оптимизации, Swift превзошел его на стандартной оптимизации от 6 до 18 раз, а на высокой — от 7 до 35 раз, в зависимости от типа сортировки. Согласитесь, это очень  впечатляющий прирост быстродействия, демонстрирующий явное превосходство Swift по сравнению с Objective-C.

oc1
oc2
oc3

Что касается сравнения с Си (эти результаты Джесси Сквайрс опубликовал как раз сегодня), то и здесь новый язык программирования не упал лицом в грязь: на среднем и максимальном уровне оптимизации Swift уступил Си самое большее в 4.5-раза, ухитрившись превзойти его в 1.5-2 раза в одном из алгоритмов сортировки.

1с
2с

Подчеркиваем, что речь идет о бета-версии, выпущенной полтора месяца спустя после первого релиза. Не исключено, в последующих версиях производительность приложений, написанных на Swift и скомпилированных в Xcode 6, окажется еще выше.