Суть теста заключается в том, чтобы заполнить пустой массив большим количеством индексов. Затем, использовать получившеюся длину массива в двух циклах. В одном цикле длина массива будет записана в переменную, а в другом — нет. Полученный результат можно сравнить с помощью метода
getTime(). Про сам метод можно почитать тут.Начнём. В этой части кода создаётся пустой массив и с помощью цикла
for, в него складываются индексы:var testI = [];
for (var i = 1; i < 100000000; i++) {
testI.push(i);
}Цикл, в котором длина массива считается при каждой итерации:
var start1 = new Date().getTime();
for (var j = 0; j < testI.lenght; j++) {
200000000000000000000 * 3000000000000 + 30000000000000 + 100000000000000;
}
var end1 = new Date().getTime();
console.log("Операция №1 заняла: " + (end1 - start1) + " мс.");Перед началом цикла в переменную
start1 записывается начальное время, а после его выполнения в переменную end1 записывается конечное время. Затем, из конечного времени вычитается начальное и получается время выполнения цикла.Цикл, в котором длина массива записывается в переменную:
var start2 = new Date().getTime();
for (var q = 0, max = testI.lenght; q < max; q++) {
20000000000000000000 * 3000000000000 + 30000000000000 + 100000000000000;
}
var end2 = new Date().getTime();
console.log("Операция №2 заняла: " + (end2 - start2) + " мс.");Весь код целиком:
var testI = [];
for (var i = 1; i < 100000000; i++) {
testI.push(i);
}
var start1 = new Date().getTime();
for (var j = 0; j < testI.lenght; j++) {
200000000000000000000 * 3000000000000 + 30000000000000 + 100000000000000;
}
var end1 = new Date().getTime();
console.log("Операция №1 заняла: " + (end1 - start1) + " мс.");
var start2 = new Date().getTime();
for (var q = 0, max = testI.lenght; q < max; q++) {
20000000000000000000 * 3000000000000 + 30000000000000 + 100000000000000;
}
var end2 = new Date().getTime();
console.log("Операция №2 заняла: " + (end2 - start2) + " мс.");
//result Операция №1 заняла: 0 мс. Операция №2 заняла: 0 мс.Результат
Практически всегда, оба цикла выполняются меньше чем за 1 миллисекунду. Я пытался нагрузить систему, чтобы время расчётов увеличилось, но у меня ничего не вышло. Можете мне написать, если знаете, как это сделать.
Вывод
1. Тесты — дело неблагодарное.
2. Можно особо не запариваться, если на производительность не влияет.
3. Миша отчасти прав. Дело в том, что разница будет видна только в том случае, если расчёты будут более существенными. Но такого варианта я пока себе не могу представить.