Was sind die Vorteile von "Let" in Swift?

8

Ich weiß Swift ermutigt uns Programmierer, immer Konstanten ( let ) anstelle von Variablen ( var ) zu verwenden, wenn es sinnvoll ist.

Das ist eine gute Sache, weil wir dem Compiler mehr Details darüber geben, was unser Code bedeutet, und der Compiler kann uns besser davor bewahren, Fehler zu machen (z. B. einen Wert ändern, der nicht geändert werden sollte).

Meine Frage ist, gibt es einige Leistungsoptimierungen der Compiler gilt, wenn wir Konstanten anstelle von Variablen verwenden? (z. B. schnellere Ausführungszeiten, geringerer Platzbedarf, ...).

    
Luca Angeletti 27.07.2015, 11:11
quelle

2 Antworten

10

Sie haben gefragt: "... gibt es einige Leistungsoptimierungen, die der Compiler anwendet, wenn wir Konstanten anstelle von Variablen verwenden?"

Die Antwort ist ja, absolut.

Veränderbare Sammlungen können anders als unveränderliche Sammlungen organisiert sein, damit sie geändert werden können. Unveränderbare Sammlungen können für den schreibgeschützten Betrieb optimiert werden.

Dann gibt es die Verwendung von veränderbaren / unveränderlichen Objekten. Der Compiler muss möglicherweise Code generieren, der ein veränderbares Objekt kopiert, wenn es als Eigenschaft eines anderen Objekts geteilt wird, um unerwünschte Nebenwirkungen zu vermeiden.

Vergleich von unveränderlichen Objekten (vergleichbar / vergleichbar) kann auch auf eine Weise optimiert werden, die veränderbare Objekte nicht können.

Sulthan's Standpunkt bezüglich der Intelligenz des Compilers ist jedoch gut. Der Compiler kann oft folgern, dass sich eine Variable niemals von der Codeanalyse unterscheidet, was das Benchmarking im Vergleich zur Verwendung von var stark machen kann.

    
Duncan C 27.07.2015, 11:19
quelle
7

Die richtige Antwort für jetzt ist "wahrscheinlich nicht".

Es ist immer ratsam, dem Compiler zusätzliche Informationen zur Verfügung zu stellen, der Compiler ist jedoch schon ziemlich schlau. In vielen Fällen kann es sehen, dass eine Variable tatsächlich eine Konstante ist, selbst wenn Sie var verwenden, also sagt let keine neuen Informationen und es wird keinen Vorteil bringen.

Der größte Vorteil von const / let ist ein Schutz vor Programmierfehlern. Es kann in bestimmten Fällen Leistungsvorteile haben, aber moderne Compiler brauchen den Programmierer nicht wirklich, um ihnen zu sagen, dass eine Variable nur einmal vergeben wird.

    
Sulthan 27.07.2015 11:27
quelle

Tags und Links