測試方式:
使用相同For迴圈測試加總所需時間
測試程式碼(AS3):
var now:Date = new Date();
var s1:Number, s2:Number, s3:Number, s4:Number, s5:Number;
s1 = now.getTime();
for(var i:int = 1 ; i < 10000001 ; i++){
if(i == 10000000){
var time5:Date = new Date();
s5 = (time5.getTime() - s1);
t4.text = "千萬次花了" + s5.toString() + "毫秒";
}else if(i == 1000000){
var time4:Date = new Date();
s4 = (time4.getTime() - s1);
t3.text = "百萬次花了" + s4.toString() + "毫秒";
}else if(i == 100000){
var time3:Date = new Date();
s3 = (time3.getTime() - s1);
t2.text = "十萬次花了" + s3.toString() + "毫秒";
}else if(i == 10000){
var time2:Date = new Date();
s2 = (time2.getTime() - s1);
t1.text = "一萬次花了" + s2.toString() + "毫秒";
}
}
}
測試數據:
Android模擬器(Android 2.2)
計算次數 | Java原生(ms) | AIR(ms) | 差異百分比 |
1萬次 | 8 | 14 | 1.75 |
10萬 | 79 | 33 | 0.417722 |
100萬 | 791 | 147 | 0.185841 |
實機測試(測試機種 SE Neo V Android 2.3)
計算次數 | Java原生(ms) | AIR(ms) | 差異倍數(AIR/Java) |
1萬次 | 8 | 8 | 1 |
10萬 | 11 | 28 | 2.545454545 |
100萬 | 42 | 82 | 1.952380952 |
結論:
AIR在實機上比原生語言慢1倍,但實際觀察所耗時間(ms),還在可容許範圍內
如果使用AIR做複雜程式開發需考慮更好的效能及程式優化技巧
沒有留言:
張貼留言