2015-02-11 3 views
20

Я занимаюсь некоторыми исследованиями по Swift, и это различия с Objective-C. Из того, что я могу собрать, текущая версия Swift довольно быстро, быстрее, чем тогда Objective-C: see here.Swift vs Objective-C: Производительность приложения

Однако, поскольку большинство этих тестов выполняются с помощью алгоритмов сортировки и т. Д., Мне интересно, будет ли Swift на самом деле быстрее, чем Objective-C, когда он используется для разработки приложений iOS. Может ли кто-нибудь просветить меня на этом, желательно из собственного опыта.

ответ

22

There is a great blog-post об улучшении скоростного исполнения, особенно после выпуск Swift 1.2.

Автор провёл несколько тестов с различным кодом, похожим на код типа Swift, как Swjc, только Swift и Objective-c. И результатом было то, что Swift 1.2 намного быстрее, чем раньше. Он проводил тесты с JSON, поэтому это немного практичнее, чем просто алгоритмы.

Помимо «реального» исполнения, мой личный опыт в том, что я развиваюсь намного быстрее в Swift. Мне никогда не нравились файлы .h и .m от Objective-C, потому что он остановил «поток программирования». Также я думаю, что сам синтаксис намного проще, чем в объективе-c [с этими скобками].

Поэтому я думаю, что если вы напишете новый проект из Scratch, Swift будет намного проще, быстрее и элегантнее. (Мое мнение)

34

Свифт утверждает, что Apple быстрее, чем Objective-C, и, как вы сказали, быстрее в таких алгоритмах сортировки, но для использования iOS developemnt, простой пользователь не узнает разницу между приложение, разработанное в Swift или Objective-C. Я разработал множество приложений в Objective-C, которые находятся в магазине Apple, а теперь несколько в Swift, и до сих пор пользователи не могут отличить друг от друга, если они намного быстрее, чем другие.

Swift вряд ли приведет к приложениям, которые работают намного быстрее, чем приложения, разработанные в Objective-C. Несмотря на то, что оба языка отличаются друг от друга, оба нацелены на те же API-интерфейсы Cocoa и Cocoa Touch, iOS и OS X a, оба являются статически типизированными языками, и оба используют один и тот же компилятор LLVM, поэтому они все-таки не совсем разные. Там будут различия в производительности, поскольку в то же время эти два языка не идентичны, но не ожидают значительных различий.

Swift также разработан от Apple, чтобы обратиться к новым программистам, потому что он похож на такие языки, как Ruby и Python, чем Objective-C.

1

У Swift по сравнению с Objective-C есть свои преимущества, такие как: Swift обрабатывает строки более легко, быстрые кортежи предлагают составные переменные, а также, кодеры не должны тратить время на аннотирование переменных с информацией о типе и ошибки при создании ошибок; в большинстве случаев компилятор может вывести тип из значения, заданного переменной.

+2

Этот ответ делает а не адрес производительности, вопрос здесь. Это важный вопрос. Являются ли эти языковые особенности и магия компилятора какой-либо ущерб производительности для существующего и, возможно, столь же жизнеспособного решения? Мне тоже нравятся эти функции, но они не стоят даже низкой производительности. – Morkrom

+0

неконструктивный. ОП не спрашивал о языковых средствах. Кроме того, как уже упоминалось, не учитывается производительность. –

0

Вы можете написать медленный код на любом языке, и Swift не является исключением. У меня не было времени полностью оценить Swift 1.2 Beta, но даже до того, как большинство кодов можно было сделать достаточно быстро, но было очень легко сделать это очень медленно. Доступ к не конечным методам экземпляра особенно был очень медленным, а сборки Debug были ужасно медленными (у меня есть несколько случаев, в 100 раз медленнее, чем выпуски). Небольшую работу по оптимизации наиболее глубоко вложенных петель обычно было достаточно, чтобы быстро получить ее где-то ближе к производительности C.

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

При сравнении Objective-C также стоит учитывать то, что мы подразумеваем под Objective-C. Вы можете написать C-функции в коде Objective-C, и они приведут к коду так же быстро, как C. Я бы сказал, что они были C, и что для значимого обсуждения производительности Objective-C это должен быть код, основанный на отправке сообщений Objective-C и вероятно, NSArrays, а не сырые массивы C. Если это основа Swift (при оптимизации и использовании структур и конечных классов), выйдет достаточно хорошо. Однако, если вы сравниваете с кодом C, обычно будет так, что Swift будет медленнее на данный момент.

У меня есть несколько сообщений в блоге об оптимизации Swift на моем blog, и я дал short talk еще в октябре.

0

Свифт быстрее по сравнению с Objective-C; это то, что утверждает команда Apple Swift, и это, безусловно, так. Однако факт состоит в том, что вам нужно планировать много вещей, чтобы писать отзывчивые приложения. Вот несколько советов:

  1. Удалить неиспользуемые ресурсы
  2. Оптимизация ресурсов для бывших изображений
  3. Кэширование
  4. Сжатие
  5. многоразовый код
  6. управления жизненным
  7. Объект
Смежные вопросы