2013-05-25 1 views

ответ

2

со списками и очередями, то последний имеет тенденцию быть примерно в 2 - 2,5 раза быстрее на моей машине, используя Dart VM. Это имеет смысл, потому что forEach выполняет итерацию внутри с некоторым вариантом for (int i = 0; i < length; i++), а for-in выполняет итерацию с Iterator.moveNext().

Использование dart2js и работает на d8, forEach примерно в 1,3 раза быстрее, на моей машине для Очереди, но в 1,2 раза медленнее для списков.

Как всегда, когда производительность является особенно важным фактором, имеет смысл сравнивать ваш код реального мира.

Я бы счел это ошибкой, если бы значительная разница в потреблении памяти.

Update: Флориан Loitsch объясняет в комментариях ниже:

Метод moveNext в настоящее время не встраиваемый (слишком большой). Это то, что должно измениться очень скоро, после чего оба должны быть примерно с одинаковой скоростью.

+0

Вы тестировали на VM или dart2js? –

+0

@AlexandreArdhuin Просто виртуальная машина. –

+0

@AlexandreArdhuin С 'dart2js',' forEach' все еще быстрее, но только в 1,3 раза. –

Смежные вопросы