Skip to content

Instantly share code, notes, and snippets.

@marcbachmann
Last active December 10, 2016 11:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marcbachmann/f831e041ab4f04dfadc0861c0f155e6d to your computer and use it in GitHub Desktop.
Save marcbachmann/f831e041ab4f04dfadc0861c0f155e6d to your computer and use it in GitHub Desktop.
Bench function vs bind vs new Object

Node 6.9.1

NANOBENCH version 1

# benchFunction
  end ~220 ms (0 s + 219586469 ns)
# benchBind
  end ~3.19 s (3 s + 186017098 ns)
# benchObject
  end ~90 ms (0 s + 89620728 ns)

# total ~3.5 s (3 s + 495224295 ns)

# ok

Node 7.2.1

NANOBENCH version 1

# benchFunction
  end ~265 ms (0 s + 264772808 ns)
# benchBind
  end ~224 ms (0 s + 223533755 ns)
# benchObject
  end ~93 ms (0 s + 92805046 ns)

# total ~581 ms (0 s + 581111609 ns)

# ok
'use strict'
var bench = require('nanobench')
var request = {end: function () {}}
bench('benchFunction', function (b) {
b.start()
for (var i = 0; i < 10000000; i++) {
(function foo () { request.end() })()
}
b.end()
})
bench('benchBind', function (b) {
b.start()
for (var i = 0; i < 10000000; i++) {
reply.bind(request)()
}
b.end()
})
bench('benchObject', function (b) {
b.start()
for (var i = 0; i < 10000000; i++) {
(new Reply(request)).send()
}
b.end()
})
function reply () {
this.end()
}
function Reply (res) {
this.res = res
}
Reply.prototype.send = function () {
this.res.end()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment