Was ist schneller?
Wie immer wieder angepriesen, soll Swift – wie seine Namenswahl ausdrückt – durch seine Schnelligkeit überzeugen.
Die Ähnlichkeit zu Objective-C, aber auch zu Skriptsprachen wie Rust oder Javascript ist allgegenwärtig. Doch ist Swift wirklich schneller als Objective-C? Der Entwickler Keith Gugliotto hat dies nun auf seiner Webseite überprüft. Auf dessen Website findet Ihr auch den Originalartikel auf Englisch.
Der Test fand unter folgenden Vorraussetzungen statt:
1. Eine Applikation wurde sowohl in Swift als auch in Objective-C geschrieben.
2. Die Schleifen liefen rund eine Millionen Mal.
3. Der Code wurde drei Mal ausgeführt und die Zeiten sind Durchschnittswerte.
4. Auf der Objective-C Seite wurde mit bedingten Zuweisung innerhalb der Schleife gearbeitet um zu garantieren, dass der Compiler diese nicht komplett optimiert.
Bei Schleifen schneidet Swift eigentlich ziemlich gut ab. Es handelt sich hier um eine reine C Übung seitens Objective-C, daher ist dieses hier auch 29 Mal schneller.
Auch bei der Inkrementierung führt Objective-C deutlich, so ist es hier 46 Mal schneller als Swift
Bei einfachen Zuweisungen, hier ein simples
x = y führt nach wie vor Objective-C.
Mit der Annahme das Swift hier durch Automatic Reference Counting eine Millionen Mal retained und released, lässt sich diese Zeit wohl erklären. Objective-C ist hier 31.4 Mal schneller.
Möchte man einen nativen String in ein natives Array ablegen, sinkt der Vorsprung gegenüber Swift schon etwas. 7.9 Mal schneller ist bisher der geringste Vorsprung.
Bei einem nativen Integer, der in ein natives Array ablegt wird steigt der Vorsprung wieder geringfügig. Objective-C ist hier 13 Mal schneller.
In Swift wird ein Array von Ints bzw. Strings benutzt, während in Objective-C NSNumbers bzw. NSStrings einem NSMutableArray hinzugefügt werden. Hier würde man deutlich an Geschwindigkeit gewinnen, wenn man bis auf CFMutableArrayRef Ebene geht, da die vielen retains nicht notwendig sind. Dasselbe gilt für Swift. Die Verwendung von C-Arrays würde zu einem verfälschten Ergebnis führen und wieder betont der Autor das ARC keine Leistungsoptimierung sei!
Bei der Verkettung zweier Strings würde man annehmen das Swift und Objective-C nahezu gleich abschneiden.
Hier ist wieder schön zu erkennen, das Swift im Schleifenrumpf gegenüber Objective-C wieder durch seine Simplizität besticht.
Swift:
1 |
string3 = string + string2 |
Objective-C:
1 |
string3 = [string stringByAppendingString:string2]; |
Jedoch ist Objective-C auch hier 11.7 Mal schneller.
Fazit
Swift mit Objective-C zu vergleichen ist zu diesem Zeitpunkt unserer Meinung nach noch etwas voreilig. Gerade weil diese Tests von verschiedenen Entwicklern unterschiedliche Ergebnisse hervorbrachten. Zudem steckt die Sprache noch in den Kinderschuhen und wird von Apple noch die ein oder andere Verbesserung erhalten.
An unserer Meinung über Swift hat sich durch diese ersten unabhängigen Benchmark nichts geändert. Swift ist und bleibt der unkomplizierte Einstieg in die App-Enwicklerwelt und bietet gerade Einsteigern schnelle Erfolgserlebnisse. Besonders im Vergleich zur komplizierten Hochsprache Objective-C ist dies ein schönes Angebot aus dem Apple Universum, um mit neuen Entwicklern das Appspektrum zu erweitern.
Wir sind gespannt, was Swift zukünftig an Verbesserungen bis zu seinem Release im Herbst erleben wird und wie zukünftige Benchmarks ausfallen werden.
Hier gibt es nochmals den Link zu dem Originalartikel.
Kommentare und Feedback sind wie immer erwünscht!
2 Comments
wieso nochmals testen?
das hat doch apple bereits für uns getan, und per Diagramm in der Keynote visualisiert, dass es vieeeel schneller ist!!!
Wir wissen nicht wirklich wie wir dir darauf Antworten sollen, uns fehlt gerade ein wenig das Gespür ob hier Sarkasmus mit im Spiel ist oder nicht.
Entschuldige Bitte.