thử mã này trong Flash:Tại sao i = i + 1 nhanh hơn i + +?
var i:int = 0;
for (var j:int = 0; j < 5000000; j++)
{
i=i+1;
}// use about 300ms.
i = 0;
for (var j:int = 0; j < 5000000; j++)
{
i++;
}// use about 400ms
i = 0;
for (var j:int = 0; j < 5000000; j++)
{
++i;
}// use about 400ms too
Tại sao i=i+1
nhanh hơn trong ActionScript 3 khi nó chậm hơn những người khác?
Xin lỗi, tôi thực hiện một số lỗi. Mã ở trên sử dụng cùng một lúc. nhưng nếu đặt vào chức năng và kết quả sẽ khác.
var i:int;
var j:int;
var startTime:Number;
function func1():void
{
i = i + 1;
}
function func2():void
{
i++;
}
startTime = getTimer();
i = 0;
for (j = 0; j < 10000000; j++)
{
func1();
}
trace(getTimer() - startTime);//5 times:631,628,641,628,632
startTime = getTimer();
i = 0;
for (j = 0; j < 10000000; j++)
{
func2();
}
trace(getTimer() - startTime);//5 times:800,814,791,832,777
bạn Can lần 10 chiều dài vòng lặp, và chắc chắn rằng đó thực sự là một sự khác biệt? – scientiaesthete
Bạn có ý nghĩa gì bởi "chậm hơn ở những người khác?" Các ngôn ngữ lập trình khác? Cái nào? –
Lưu ý nhỏ: Việc bạn có cài đặt release-/debugbuild ('cho phép gỡ lỗi' trong FlashIDE) có quan trọng không, và kết quả cũng có thể thay đổi trong bản phát hành và trình gỡ lỗi. http://jacksondunstan.com có rất nhiều bài kiểm tra hiệu suất chuyên sâu cho một số người chơi. –