mirror of https://github.com/lukechilds/node.git
isaacs
12 years ago
7 changed files with 46 additions and 61 deletions
@ -1,43 +0,0 @@ |
|||
var binding = require('./build/default/binding'); |
|||
|
|||
c = 0 |
|||
|
|||
function js() { |
|||
return c++; //(new Date()).getTime();
|
|||
} |
|||
|
|||
var cxx = binding.hello; |
|||
|
|||
var i, N = 100000000; |
|||
|
|||
console.log(js()); |
|||
console.log(cxx()); |
|||
|
|||
|
|||
|
|||
var start = new Date(); |
|||
for (i = 0; i < N; i++) { |
|||
js(); |
|||
} |
|||
var jsDiff = new Date() - start; |
|||
console.log(N +" JS function calls: " + jsDiff); |
|||
|
|||
|
|||
var start = new Date(); |
|||
for (i = 0; i < N; i++) { |
|||
cxx(); |
|||
} |
|||
var cxxDiff = new Date() - start; |
|||
console.log(N +" C++ function calls: " + cxxDiff); |
|||
|
|||
function toMicro (diff) { |
|||
return (diff / N) * 1000000; |
|||
} |
|||
|
|||
console.log("\nJS function call speed: %d microseconds", toMicro(jsDiff)); |
|||
console.log("C++ function call speed: %d microseconds", toMicro(cxxDiff)); |
|||
|
|||
|
|||
console.log("\nJS speedup " + (cxxDiff / jsDiff)); |
|||
|
|||
|
@ -1,15 +0,0 @@ |
|||
srcdir = '.' |
|||
blddir = 'build' |
|||
VERSION = '0.0.1' |
|||
|
|||
def set_options(opt): |
|||
opt.tool_options('compiler_cxx') |
|||
|
|||
def configure(conf): |
|||
conf.check_tool('compiler_cxx') |
|||
conf.check_tool('node_addon') |
|||
|
|||
def build(bld): |
|||
obj = bld.new_task_gen('cxx', 'shlib', 'node_addon') |
|||
obj.target = 'binding' |
|||
obj.source = 'binding.cc' |
@ -0,0 +1 @@ |
|||
build/ |
@ -0,0 +1,2 @@ |
|||
binding: |
|||
node-gyp rebuild --nodedir=../../.. |
@ -0,0 +1,8 @@ |
|||
{ |
|||
'targets': [ |
|||
{ |
|||
'target_name': 'binding', |
|||
'sources': [ 'binding.cc' ] |
|||
} |
|||
] |
|||
} |
@ -0,0 +1,33 @@ |
|||
// show the difference between calling a short js function
|
|||
// relative to a comparable C++ function.
|
|||
// Reports millions of calls per second.
|
|||
// Note that JS speed goes up, while cxx speed stays about the same.
|
|||
|
|||
var assert = require('assert'); |
|||
var common = require('../../common.js'); |
|||
|
|||
var binding = require('./build/Release/binding'); |
|||
var cxx = binding.hello; |
|||
|
|||
var c = 0; |
|||
function js() { |
|||
return c++; |
|||
} |
|||
|
|||
assert(js() === cxx()); |
|||
|
|||
var bench = common.createBenchmark(main, { |
|||
type: ['js', 'cxx'], |
|||
millions: [1,10,50] |
|||
}); |
|||
|
|||
function main(conf) { |
|||
var n = +conf.millions * 1e6; |
|||
|
|||
var fn = conf.type === 'cxx' ? cxx : js; |
|||
bench.start(); |
|||
for (var i = 0; i < n; i++) { |
|||
fn(); |
|||
} |
|||
bench.end(+conf.millions); |
|||
} |
Loading…
Reference in new issue