Я сравниваю нотацию O (n) в JavaScript, имея в качестве входных данных степени десяти.Вот как выглядит мой код (внутри класса):
execute(options) {
console.log("O(n) time complexity benchmark");
console.log("----------------------------");
this.benchmark(10);
this.benchmark(100);
this.benchmark(1000);
this.benchmark(10000);
this.benchmark(100000);
}
benchmark(n) {
let sum = 0;
console.time(n);
for (let i = 0; i < n; i++) {
sum += i;
}
console.timeEnd(n);
}
Вывод:
O (n) тест сложности времени
10: 0,247мс
100: 0,006мс
1000: 0,019мс
10000: 0,177мс
100000: 2,758 мс
Как видите, время выполнения кажется правильным, за исключением N = 10, что намного выше, чем должно быть.Что вызывает это?Это как-то связано с оптимизацией компилятора?
Редактировать: Причина была в console.time () с начальной задержкой установки.Это исправлено добавлением следующего кода в метод execute () перед запуском теста:
console.time("setup");
console.timeEnd("setup");