Сообщение от SuperZen
|
ну получается magic quotes продуктивнее ) в моем браузере...
|
Вы в своём тесте специально подобрали такое вычисление, которое показывает, что первый тест быстрей выполнится.
Сообщение от рони
|
Google Chrome, Firefox, последние, если менять очерёдность массивов, то массив, созданный первым, быстрее проходит тест, у меня так.
|
Логично, ведь первый тест раньше выполняется.
Научное измерение длительности какого-либо процесса выглядит так:
- Измерить начальное время t₀
- Запустить и дождаться окончания процесса
- Измерить конечное время t₁
Разность Δt = t₁ − t₀ указывает на длительность процесса. При необходимости можно повторить процесс измерения несколько раз и найти среднее арифметическое для получения усреднённого результата.
Я думаю, что два вычисления не отличаются по эффективности (т. е. они одинаково эффективны), если время их выполнения различается не более чем на полпорядка.
(function(size, iterations, tests) {
console.log('I assume I break NOTHING \uD83D\uDE1C')
var iterationsResult = [];
for(var i = 0; i < iterations; i++) {
var v = 100 + Math.round(1400 * Math.random());
iterationsResult.push(tests.map(test => ({
start: performance.now(),
value: Array.from({ length: size }, () => test(v)),
end: performance.now(),
get dt() { return this.end - this.start }
})));
}
var times;
console.table(
(times = iterationsResult
.reduce((memo, results) => results.map((result, i) => memo[i] + result.dt), new Array(tests.length).fill(0))
.map(v => v / iterations / size))
.reduce((m, v, i) => ({ ...m, [tests[i]]: {
duration: `${(1000000 * v).toFixed(3)} ns`,
order: 0.5 * Math.round(2 * Math.log(v / 1000) / Math.log(10))
} }), {})
);
}
)(100000, 10, [
randomValue => `${randomValue}px`,
randomValue => randomValue + "px",
_ => {}
])
В таблице, которую вы видите в консоли, представлены три столбца: в первом указана выполняемая функция, во втором указано вычисленное время выполнения одной такой функции, в третьем вычислен порядок времени выполнения с точностью до полпорядка.

Например, такой результат означает, что и шаблонные строки и обычные одинаково эффективны. (А, например, вычисление пустой функции на полпорядка меньше, а значит более эффективно, чем любая строка)