AS3的一些優化計算方法

2021-08-31 12:16:59 字數 2489 閱讀 1422

1、用乘法來代替除法(當除數可轉化為有限數的時候)。比如var n:number = value *0.5;要比var n:number = value / 2;快。但差別並不是很大。只有在需要大量計算情況下,比如3d引擎中差別才比較明顯。

2、用位運算代替除2或乘2。比如10>>1要比10*2快,而10<<1要比10*2快。從測試來看位運算幾乎比乘除快一倍,但是一般情況下,我們不能選擇位運算,比如我們就不能用13>>1來代替13/2,儘管前者比後者運算速度更快,但2者的運算結果卻不一樣。所以還是要看具體情況。

3、用unit()或int()代替取整運算math.floor()和math.ceil()。比如var test:uint = uint(1.5);要比var test:number = math.floor(1.5);快;而var test:uint = uint(1.5)+1;要比var test:number = math.ceil(1.5);也快。如果是math.floor(),還可以用位運算(>>0)來代替。比如var test:uint =1.5>>0,比unit()或int()更快。

4、用乘-1來代替math.abs()方法。比如var nn:number = -23;var test:number= nn < 0 ? nn * -1 : nn;要比var nn:number = -23;var test:number = math.abs(nn);快。

當然還有更多的優化計算的方法。一般來說,低階運算要比高階運算速度;內部方法比呼叫其他方法速度快。另外要注意的是,這些方法有的時候可能並一定適用。

附上測試**:

1import

flash.utils.gettimer;23

var time:number 

=gettimer();45

function rundivisiontest():

void612

13trace(

"divisiontest: 

", (gettimer() 

-time));14}

1516

function runmulttest():

void

1723

trace(

"multtest: 

", (gettimer() 

-time));24}

2526

function runbittest():

void

2733

trace(

"bittest: 

", (gettimer() 

-time));34}

3536

function runfloortest():

void

3744

trace(

"floortest: 

", (gettimer() 

-time));45}

4647

function runuinttest():

void

4855

trace(

"uinttest: 

", (gettimer() 

-time));56}

5758

function runceiltest():

void

5966

trace(

"ceiltest: 

", (gettimer() 

-time));67}

6869

function runuintceiltest():

void

7077

trace(

"uintceiltest: 

", (gettimer() 

-time));78}

7980

function runabstest():

void

8188

trace(

"abstest: 

", (gettimer() 

-time));89}

9091

function runabsmulttest():

void

9299

trace(

"absmulttest: 

", (gettimer() 

-time));

100101

}102

103rundivisiontest();

104105

runmulttest();

106107

runbittest();

108109

runfloortest();

110111

runuinttest();

112113

runceiltest();

114115

runuintceiltest();

116117

runabstest();

118119

runabsmulttest();

ElasticSearch優化的一些方法

1.多執行緒程式插入,可以根據伺服器情況開啟多個執行緒index 速度可以提高n倍,n 2 2.如果有多台機器,可以以每台設定n個shards的方式,根據業務情況,可以考慮取消replias curl xput d 這裡設定20個shards,複製為0,如果需要replicas,可以完成index後...

ElasticSearch優化的一些方法

1.多執行緒程式插入,可以根據伺服器情況開啟多個執行緒index 速度可以提高n倍,n 2 2.如果有多台機器,可以以每台設定n個shards的方式,根據業務情況,可以考慮取消replias curl xput d 這裡設定20個shards,複製為0,如果需要replicas,可以完成index後...

ElasticSearch優化的一些方法

1.多執行緒程式插入,可以根據伺服器情況開啟多個執行緒index 速度可以提高n倍,n 2 2.如果有多台機器,可以以每台設定n個shards的方式,根據業務情況,可以考慮取消replias curl xput d 這裡設定20個shards,複製為0,如果需要replicas,可以完成index後...