Мохнатые уроды и моральные пёзды. Войти !bnw Сегодня Клубы
#507JP3 Лан, забенчмаркал (не ебу, что там модно в ноде для measure, поэтому наколенный timeit): ``` &#39;use strict&#39;; const NUMBER = 100000; const REPEAT = 50; function repeater(func, number) { let total = 0; for (let i = 0; i < number; i++) { let hrstart = process.hrtime(); func(); let [seconds, nanoseconds] = process.hrtime(hrstart); total += seconds + nanoseconds / 1e9; } return total; } function measure(func, number, repeat) { let results = []; for (let i = 0; i < repeat; i++) { results.push(repeater(func, number)); } let sum = results.reduce((prev, cur) => prev + cur, 0); let mean = sum / results.length; results.sort((a, b) => a - b); let lowMiddle = Math.floor((results.length - 1) / 2); let highMiddle = Math.ceil((results.length - 1) / 2); let median = (results[lowMiddle] + results[highMiddle]) / 2; return { min: Math.min(...results), max: Math.max(...results), mean, median, } } let functions = [ function nat() { let foo = &#39;FOO&#39;; let bar = &#39;BAR&#39;; [foo, bar] = [bar, foo]; }, function trans() { let foo = &#39;FOO&#39;; let bar = &#39;BAR&#39;; let _ref = [bar, foo]; foo = _ref[0]; bar = _ref[1]; }, function man() { let foo = &#39;FOO&#39;; let bar = &#39;BAR&#39;; let tmp = foo; foo = bar; bar = tmp; }, ] for (let func of functions) { console.log(func.name); console.dir(measure(func, NUMBER, REPEAT)); console.log(); } ``` Будующее наступило, кек: ``` nat { min: 0.021939473999997218, max: 0.03362961399999802, mean: 0.023124280179997854, median: 0.022092939999997584 } trans { min: 0.012233300999998429, max: 0.013627073000000092, mean: 0.012583868739997521, median: 0.012628050999996903 } man { min: 0.013218492999997385, max: 0.013590439999997697, mean: 0.013309132479997161, median: 0.01329254449999722 } ``` ``` $ nodejs -v v6.2.2 ```
#I9XHFP / @anonymous / 2857 дней назад

1. больше свопов в одной функции, иначе ты вдобавок замеряешь как долго вызывается функция 2. зачем ты process.hrtime внутри цикла дёргаешь, а не один раз снаружи? это вносит погрешности и опять же дополнительные вызовы, которые в total попадают
#I9XHFP/82V / @anonymous / 2857 дней назад
@anonymous 3. (маркдаун пощади) бэйбл ещё `_ref;` в конце добавляет // на самом деле, не влияет
#I9XHFP/JLS / @anonymous --> #I9XHFP/82V / 2857 дней назад
@anonymous http://pastebin.com/raw/cLnnQJZ0 (сорь, в бнвач не пролезло) твой (у меня): ```js nat { min: 0.01711951400000136, max: 0.021966790000010523, mean: 0.0180392342600022, median: 0.01725463250000145 } trans { min: 0.0086126800000004, max: 0.011181422999995921, mean: 0.009199293039999511, median: 0.008807583500000039 } man { min: 0.008338050000003077, max: 0.01147254700000202, mean: 0.008786100580002915, median: 0.008412562000003055 } ``` мой: ```js nat { min: 0.303855366, max: 0.427501995, mean: 0.32123358732, median: 0.317668179 } trans { min: 0.037241924, max: 0.054184677, mean: 0.03976641124, median: 0.037760264 } trans2 { min: 0.037499121, max: 0.049585415, mean: 0.03977490552, median: 0.0378050365 } man { min: 0.001853673, max: 0.006410827, mean: 0.0022837928600000002, median: 0.0018553855 } ``` ``` $ node -v v6.2.1 ```
#I9XHFP/53F / @anonymous --> #I9XHFP/82V / 2857 дней назад
ну вот, а ты боялся
#I9XHFP/815 / @anonymous / 2857 дней назад
@anonymous Бэйбл и let на var заменяет, но я не бэйбл бенчмаркнуть хотел.
#I9XHFP/BDP / @anonymous --> #I9XHFP/JLS / 2856 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.