web-dev-qa-db-fra.com

Swift vs Objective-C: Performances des applications

Je fais des recherches sur Swift et ses différences avec Objective-C. D'après ce que j'ai pu comprendre, la version actuelle de Swift est assez rapide, même plus rapide que Objective-C: voir ici

Cependant, comme la plupart de ces tests sont effectués avec des algorithmes de tri, etc., je me demande si Swift sera réellement plus rapide que Objective-C lorsqu'il sera utilisé pour le développement d'applications iOS. Quelqu'un peut-il m'éclairer là-dessus, de préférence à partir de leur propre expérience?.

24
Black Magic

Il y a un bon article sur le blog à propos de l'amélioration des performances de Swift, en particulier après la version 1.2 de Swift. 

L'auteur a effectué plusieurs tests avec différents types de code, tels que du code Swift de type Objc, du code Swift uniquement et du code Objective-c uniquement. Et le résultat est que Swift 1.2 est beaucoup plus rapide qu'avant. Il a effectué des tests avec JSON, donc c'est un peu plus pratique que de simples algorithmes.

En plus de la «vraie» performance, mon expérience personnelle à ce sujet est que je me développe beaucoup plus facilement dans Swift. Je n'ai jamais aimé les fichiers .h et .m d'Objective-C, car ils arrêtaient le «flux de programmation». De plus, je pense que la syntaxe elle-même est beaucoup plus facile que dans objective-c [avec ces crochets]. 

Donc, je pense que si vous écrivez un nouveau projet à partir de Scratch, Swift est beaucoup plus facile, plus rapide et plus élégant. (Mon avis)

28
Christian

Apple prétend que Swift est plus rapide qu'Objective-C, et comme vous l'avez dit plus rapidement dans ces algorithmes de tri, mais pour l'utilisation du développement iOS, un utilisateur simple ne reconnaîtrait pas la différence entre une application développée dans Swift ou Objective- C. J'ai développé de nombreuses applications dans Objective-C qui se trouvent sur Apple Store, et maintenant plusieurs applications dans Swift et jusqu'à présent, les utilisateurs ne peuvent pas faire la différence si l'une est beaucoup plus rapide que l'autre. 

Il est peu probable que Swift aboutisse à des applications beaucoup plus rapides que celles développées dans Objective-C. Même si les deux langues sont différentes, elles visent toutes deux les mêmes API Cocoa et Cocoa Touch, iOS et OS Xa. Elles sont toutes les deux typées de manière statique et utilisent le même compilateur LLVM. Elles ne sont donc pas si différentes après tout. Il y aura des différences de performances, car les deux langues ne sont finalement pas identiques, mais ne vous attendez pas à des différences significatives.

Swift est également développé à partir d’Apple pour séduire les nouveaux programmeurs car il est similaire aux langages tels que Ruby et Python qu’Objective-C. 

37
trimi

Swift comparant à Objective-C présente des avantages propres tels que: Swift gère plus facilement les chaînes, les tuples Swift offrent des variables composées et, de plus, les codeurs n'ont pas besoin de perdre du temps à annoter les variables avec des informations de type et à risquer de commettre des erreurs; dans la plupart des cas, le compilateur peut déduire le type de la valeur avec laquelle une variable est définie.

0
vesi

Vous pouvez écrire du code lent dans n’importe quelle langue et Swift ne fait pas exception. Je n'ai pas eu le temps d'évaluer complètement la version bêta de Swift 1.2, mais même avant, la plupart du code pouvait être créé assez rapidement, mais il était également très facile de le rendre très lent. L'accès aux méthodes d'instances non finales, en particulier, était très lent et les constructions Debug étaient terriblement lentes (j'ai plusieurs cas de 100 fois plus lent que les versions release). Un peu de travail pour optimiser les boucles les plus profondément imbriquées était généralement suffisant pour obtenir rapidement une performance proche de celle du C.

La plupart du code que vous écrivez n’est pas aussi critique en termes de performances que vous pouvez déplacer des opérations lentes hors de la file d’attente de l’interface utilisateur principale. Vous passerez plus de temps dans les appels d'API et ceux-ci ne seront pas affectés par le langage utilisé pour les appeler. Même lorsque les performances sont essentielles, la quantité de code qui doit être optimisée doit être très petite et vous pouvez passer à un langage plus rapide (par exemple, le langage C) pour ces parties seulement.

Lors de la comparaison de l’objectif-C, il convient également de considérer ce que nous entendons par objectif-C. Vous pouvez écrire des fonctions C dans du code Objective-C et elles aboutiront à un code aussi rapide que C. Je dirais qu'elles étaient C et que pour parler de manière significative de la performance Objective-C, il devrait s'agir d'un code basé sur l'envoi de messages Objective-C et probablement NSArrays plutôt que des tableaux C bruts. Si tel est le fondement, Swift (s’il est optimisé et utilise des structures et des classes finales), sortira plutôt bien. Toutefois, si vous comparez avec le code C, Swift ralentira généralement pour le moment.

J'ai quelques articles de blog sur l'optimisation de Swift sur mon blog et j'ai donné un court discours en octobre.

0
Joseph Lord