Есть ли разница в скорости выполнения и/или потребление памяти между:производительности между Foreach и (вар о в OBJS)
for (var o in objs) { ... }
и
objs.forEach((o) { ... });
Есть ли разница в скорости выполнения и/или потребление памяти между:производительности между Foreach и (вар о в OBJS)
for (var o in objs) { ... }
и
objs.forEach((o) { ... });
со списками и очередями, то последний имеет тенденцию быть примерно в 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
в настоящее время не встраиваемый (слишком большой). Это то, что должно измениться очень скоро, после чего оба должны быть примерно с одинаковой скоростью.
Вы тестировали на VM или dart2js? –
@AlexandreArdhuin Просто виртуальная машина. –
@AlexandreArdhuin С 'dart2js',' forEach' все еще быстрее, но только в 1,3 раза. –