Как указано в миллиметре, они сохраняют память. Обычно это не лучшее место для сохранения памяти. Вам лучше беспокоиться о утечке памяти, об эффективных форматах файлов и представлении данных в целом.
Недостатком статических констант является то, что весь глобальный доступ медленнее, чем локальный доступ. instance.ident
превосходит Class.ident
. Запустите этот код для проверки:
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;
}
}
}
thanks back2dos - это отличный пример – danjp
Что делать, если класс не обязательно должен быть создан? Возможно, использование нестатического подхода может сэкономить память в этом случае. –
Для любопытных и ленивых, я несколько раз запускал этот код в режиме отладки в Flash Player Debugger версии 11.7.700.169 (11.6), и у меня получилось усреднение результатов по поводу экземпляра в 1,01 раза быстрее. Но затем, когда я переместил вызовы 'getTimer() - start' за пределами' out (...) 'вызовов для каждого теста, я усреднял о том, что« экземпляр в 0.84 раза быстрее ». Таким образом, казалось бы, что, вопреки тому, что back2dos утверждал три года назад, в наши дни глобальный доступ в этом тестовом сценарии фактически является _faster_, чем локальный доступ. – mziwisky