Я думаю, что в ваших тестах есть проблема с яблоками в апельсины - в первом тесте вы циклически перебираете массив целых чисел 1 * 100
раз, чтобы в общей сложности выполнить 100 ваших функций (что выполняет вашу функцию doSomething
)10 раз для выполнения 1000 выполнений.)
Ваш второй случай повторяет цикл целых чисел 10 * 100
раз, что в общей сложности составляет 1000 выполнений 10 анонимных функций, каждая из которых вызывает вашу функцию doSomething
один раз.Обход массива из 100 элементов 10 раз займет больше времени, чем один раз.Создание 10 анонимных функций и вызов их по 100 раз каждая, безусловно, требует больше усилий, чем создание одной анонимной функции и ее вызов 100 раз.Эти две вещи делают ваши тесты совершенно разными.
Попробуйте вместо этого:
function doSomething(a) {
a * 10 + a * 1000000.0 / 50.0;
}
var range = _.range(100),
total_runs = _.range(10);
_.each(total_runs, function(a) {
_.each(range, doSomething);
});