Comme l'indique mmsmatt, ils économisent un peu de mémoire. Habituellement, ce n'est pas le meilleur endroit pour économiser de la mémoire cependant. Vous devriez plutôt vous préoccuper des fuites de mémoire, des formats de fichiers efficaces et de la représentation des données en général. Un inconvénient des constantes statiques est que tous les accès globaux sont plus lents que l'accès local. instance.ident
surpasse Class.ident
. Exécutez ce code pour tester:
package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.utils.*;
public class Benchmark extends Sprite {
private static const delta:int = 0;
private const delta:int = 0;
private var output:TextField;
public function Benchmark() {
setTimeout(doBenchmark, 1000);
this.makeOutput();
}
private function doBenchmark():void {
var i:int, start:int, sum:int, inst:int, cls:int;
start = getTimer();
sum = 0;
for (i = 0; i < 100000000; i++) sum += this.delta;
out("instance:", inst = getTimer() - start);
start = getTimer();
sum = 0;
for (i = 0; i < 100000000; i++) sum += Benchmark.delta;
out("class:", cls = getTimer() - start);
out("instance is", cls/inst, "times faster");
}
private function out(...args):void {
this.output.appendText(args.join(" ") + "\n");
}
private function makeOutput():void {
this.addChild(this.output = new TextField());
this.output.width = stage.stageWidth;
this.output.height = stage.stageHeight;
this.output.multiline = this.output.wordWrap = true;
this.output.background = true;
}
}
}
merci back2dos - c'est un bon exemple – danjp
Et si la classe n'a pas vraiment besoin d'être instanciée? Peut-être que l'utilisation de l'approche non statique pourrait sauver la mémoire dans ce cas. –
Pour les curieux et fainéants, j'ai couru ce code quelques fois en mode débogage dans Flash Player Debugger Version 11.7.700.169 (11.6), et j'ai obtenu des résultats en moyenne sur 'instance est 1.01 fois plus rapide». Mais ensuite, quand j'ai déplacé les appels 'getTimer() - start' en dehors des appels' out (...) 'pour chaque test, je faisais en moyenne environ' instance est 0.84 fois plus rapide'. Il semblerait donc que, contrairement à ce que back2dos a affirmé il y a trois ans, ces jours-ci, l'accès global à ce test est en fait plus rapide que l'accès local. – mziwisky