1
은 실행 속도 및/또는 메모리 사용량에 차이가 사이 :성능 차이
for (var o in objs) { ... }
및
목록 및 큐로objs.forEach((o) { ... });
은 실행 속도 및/또는 메모리 사용량에 차이가 사이 :성능 차이
for (var o in objs) { ... }
및
목록 및 큐로objs.forEach((o) { ... });
상기 후자는 Dart VM을 사용하여 내 컴퓨터에서 약 2 ~ 2.5 배 빠릅니다. forEach
은 for (int i = 0; i < length; i++)
의 일부 변형을 내부적으로 반복하고 for-in
은 Iterator.moveNext()
과 반복하기 때문에 이는 의미가 있습니다.
dart2js
를 사용하고 d8
에서 실행 forEach
는 약 1.3 배 빠른 내 컴퓨터에서 큐에 있지만 목록 1.2 배 느린.
항상 성능이 특히 중요한 고려 사항 일 때 실제 코드를 벤치마킹하는 것이 좋습니다.
메모리 소비에 상당한 차이가 있다면 버그라고 생각합니다.
업데이트 : 플로리안 Loitsch 아래 코멘트에 대해 설명합니다
moveNext
방법은 현재 인라인되지 않는 (너무 커서). 이것은 매우 빨리 변화해야하는 것이고, 그 후에는 대략 동일한 속도로 진행되어야합니다.
VM 또는 dart2js에서 테스트 해 보셨습니까? –
@AlexandreArdhuin 그냥 VM입니다. –
@AlexandreArdhuin'dart2js'에서'forEach'는 여전히 빠르지 만 약 1.3 배 정도입니다. –