無論剛入門的還是有一定as3程式設計基礎的,對math類應該都不陌生了,但math類的效能又知多少呢?請看下文吧。
1、math.floor()
通俗的講這是乙個取整函式。
其實官方解釋是
返回由引數 val 指定的數字或表示式的下限值。 下限值是小於等於指定數字或表示式的最接近的整數。
效能測試:
var num:number = math.pi;
var length:int = 10000000;
var time:int = gettimer();
for(var i:int = 0; i < length; i ++)
trace(gettimer() - time);
// 結果:1865
var num:number = math.pi;
var length:int = 10000000;
var time:int = gettimer();
for(var i:int = 0; i < length; i ++)
trace(gettimer() - time);
// 結果:69
結果很明顯,int比floor快,可能大家就要說了,那adobe傻x寫個這樣介面幹什麼?其實這就是我想說的對於floor的使用誤區。
仔細看官方解釋,其實floor不是乙個真正我們所理解的取整函式,他是去找最接近自己,且比自己小或者等於的整數
,那這是什麼意思呢?
var num:number = - math.pi;
trace(int(num));
trace(math.floor(num));
// 結果1:-3
// 結果2:-4
這個例子很明確表示,當目標數字是負數時,int和floor所得出的結果不一樣。
int()的官方解釋
將給定數字值轉換成整數值。 從小數點處截斷十進位制值。
相信看到這,你已經很明白了。
但是實際上,如果你這樣去使用int(),跟floor輸出的結果相同:
var num:number = - math.pi;
var length:int = 10000000;
var time:int = gettimer();
for(var i:int = 0; i < length; i ++)else }
trace(gettimer() - time);
// 結果:132
2、math.pow()
對於這個方法,我也不知道說什麼好了,先看效能測試吧:
var a:int = 3;
var b:int = 4;
var c:int = 5;
var length:int = 10000000;
var time:int = gettimer();
for(var i:int = 0; i < length; i ++)
trace(gettimer() - time);
// 結果:95
var a:int = 3;
var b:int = 4;
var c:int = 5;
var length:int = 10000000;
var time:int = gettimer();
for(var i:int = 0; i < length; i ++)
trace(gettimer() - time);
// 結果:7999
勾三股四弦五大家應該比較多,但是用"*"乘法運算和pow的效能比較那是非常明顯啊。
難道大家又想說adobe**了?這兒我為它平反吧。
var num:number = math.pi;
var length:int = 10000000;
var time:int = gettimer();
for(var i:int = 0; i < length; i ++)
trace(gettimer() - time);
// 結果:6682
先不說"*"乘法運算比pow快,就上面這段你能把它換算成使用"*"乘法運算嗎?
而且pow其實是可以這樣用的:(數學學得好都知道開方其實是可以轉換成乘方來算的)
trace(math.pow(27,1/3));
trace(math.pow(256,1/4));
trace(math.pow(3125,1/5));
而開方函式adobe只提供了sqrt乙個開平方根的介面(經測試math.sqrt(9)比math.pow(9,1/2)快,但開立方等就得靠pow了)。
3、math.round()
這個方法跟floor一樣的,先看效能測試:
var num:int = math.pi;
var length:int = 10000000;
var time:int = gettimer();
for(var i:int = 0; i < length; i ++)
trace(gettimer() - time);
// 結果:1931
var num:int = math.pi;
var length:int = 10000000;
var time:int = gettimer();
for(var i:int = 0; i < length; i ++)
trace(gettimer() - time);
// 結果:68
四捨五入其實加個0.5在取整,這樣也是可以的,只不過用這個演算法,存在跟第乙個同樣的問題,當目標數值為負時,兩種方式結果不一樣,需要加個判斷,目標數值為負就把結果-1。
redis memcache 效能比較
from redis和memcache非常像的,都是key,value的方式,將資料存放記憶體中。最近在學習redis,在網上看了一些這方面的資料,有三種觀點 1,redis讀寫記憶體比memcache快 2,memcache讀寫記憶體比redis快 3,memcache讀寫記憶體比redis快,但...
apache resin ngnix 效能比較
靜態頁面測試,靜態頁面包括css,js,img ab c 20 n 30 併發測試 高數值的也測過,結論一致 resin2.17 平均響應時間為0.521ms nginx 0.7.65 平均響應時間為1.042ms 少許幾次小於1.042 apache2.0 平均響應時間為最低1.042ms 在re...
tomcat效能比較
tomcat的四種基於http協議的connector效能比較 我們姑且把上面四種connector按照順序命名為 nio,http,pool,niop 為了不讓其他因素影響測試結果,我們只對乙個很簡單的jsp頁面進行測試,這個頁面僅僅是輸出乙個hello world。假設位址是 http tomc...