2013-05-25 4 views
1

은 실행 속도 및/또는 메모리 사용량에 차이가 사이 :성능 차이

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

목록 및 큐로
objs.forEach((o) { ... }); 

답변

2

상기 후자는 Dart VM을 사용하여 내 컴퓨터에서 약 2 ~ 2.5 배 빠릅니다. forEachfor (int i = 0; i < length; i++)의 일부 변형을 내부적으로 반복하고 for-inIterator.moveNext()과 반복하기 때문에 이는 의미가 있습니다.

dart2js를 사용하고 d8에서 실행 forEach는 약 1.3 배 빠른 내 컴퓨터에서 큐에 있지만 목록 1.2 배 느린.

항상 성능이 특히 중요한 고려 사항 일 때 실제 코드를 벤치마킹하는 것이 좋습니다.

메모리 소비에 상당한 차이가 있다면 버그라고 생각합니다.

업데이트 : 플로리안 Loitsch 아래 코멘트에 대해 설명합니다

moveNext 방법은 현재 인라인되지 않는 (너무 커서). 이것은 매우 빨리 변화해야하는 것이고, 그 후에는 대략 동일한 속도로 진행되어야합니다.

+0

VM 또는 dart2js에서 테스트 해 보셨습니까? –

+0

@AlexandreArdhuin 그냥 VM입니다. –

+0

@AlexandreArdhuin'dart2js'에서'forEach'는 여전히 빠르지 만 약 1.3 배 정도입니다. –