Одинаковые функции по-разному возвращаются в chrome javascript и nodejs - PullRequest
0 голосов
/ 15 апреля 2020

Так что в основном я пытался выяснить, почему мой код возвращается в chrome иначе, чем nodejs

Функция выглядит так

function func() {
    try {
        for (var a = "", t = 1e3, e = [Math.abs, Math.acos, Math.asin, Math.atanh, Math.cbrt, Math.exp, Math.random, Math.round, Math.sqrt, isFinite, isNaN, parseFloat, parseInt, JSON.parse], n = 0; n < e.length; n++) {
            var o = [],
                m = 0,
                r = performance.now(),
                i = 0,
                c = 0;
            if (void 0 !== e[n]) {
                for (i = 0; i < t && m < .6; i++) {
                    for (var b = performance.now(), d = 0; d < 4e3; d++) e[n](3.14);
                    var k = performance.now();
                    o.push(Math.round(1e3 * (k - b))), m = k - r
                }
                var s = o.sort();
                c = s[Math.floor(s.length / 2)] / 5
            }
            a = a + c + ","
        }
        return a != null ? a : func();
    } catch (a) {
        return "exception"
    }
}

Nodejs возвращает

66.8,71.4,69.4,67.8,105,97.4,30.8,24,20.8,13.4,12.8,13.6,41.8,734.2,

Но chrome js возвращает

85,59,59,69,111,105,86,73,107,54,73,59,69,845,

Я уже некоторое время пытаюсь понять это, но не могу заставить его вернуть то же самое вещь Надеюсь, кто-то может дать мне хорошее объяснение.

1 Ответ

0 голосов
/ 15 апреля 2020

Как отмечалось в комментариях, краткая версия вопроса звучит так: «Кажется, что реализации https://source.chromium.org/chromium/chromium/src/+/master Chrome и Node отличаются, правда?»

Ну, это все с открытым исходным кодом, убедитесь сами! Вот реализация Chrome: *1005*: третья сторона / мигание / визуализация / ядро ​​/ синхронизация / performance.cc; l = 1005; drc = da6ef73266f6110abc5e788457f0e8f9257dd5b6; bpv = 1; bpt = 1

А вот Node's: https://github.com/nodejs/node/blob/d0a3bf1f115a619ffcd8804d5b006555433af13b/lib/perf_hooks.js#L155

Помимо различий в реализации, высокоточная синхронизация, очевидно, не может быть точно воспроизведена.

...