2013-05-25 78 views
1

是否有在執行速度和/或存儲器消耗的任何差異之間:性能差

for (var o in objs) { ... } 

objs.forEach((o) { ... }); 

回答

2

列表和隊列,所述後者在我的機器上使用Dart VM的速度通常要快2到2.5倍。這是有道理的,因爲forEach在內部迭代01​​的某些變體,而for-in迭代Iterator.moveNext()

使用dart2jsd8運行,forEach是我的機器上更快隊列約1.3倍,但對於列表1.2倍

一如既往,當性能是一個特別重要的考慮因素時,基準測試您的真實世界代碼是有意義的。

如果內存消耗存在實質性差異,我會認爲它是一個錯誤。

更新:弗洛裏安Loitsch解釋在下面的意見:

moveNext方法目前沒有內聯(太大)。這種情況應該很快發生變化,之後兩者應該大致保持相同的速度。

+0

你在VM或dart2js上測試過嗎? –

+0

@AlexandreArdhuin只是虛擬機。 –

+0

@AlexandreArdhuin使用'dart2js','forEach'仍然更快,但只有1.3倍。 –