Сравнительная запись O (n) в JavaScript вызывает странное первое значение - PullRequest
0 голосов
/ 04 февраля 2019

Я сравниваю нотацию 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");
...