forked from nodejs/node
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'ry/v0.10' into master
Conflicts: AUTHORS ChangeLog deps/uv/ChangeLog deps/uv/config-unix.mk deps/uv/src/unix/stream.c deps/uv/src/version.c deps/uv/uv.gyp src/node.cc src/node_buffer.cc src/node_crypto.cc src/node_version.h src/stream_wrap.cc src/stream_wrap.h
- Loading branch information
Showing
32 changed files
with
1,378 additions
and
891 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
// throughput benchmark | ||
// creates a single hasher, then pushes a bunch of data through it | ||
var common = require('../common.js'); | ||
var crypto = require('crypto'); | ||
|
||
var bench = common.createBenchmark(main, { | ||
writes: [500], | ||
algo: [ 'sha256', 'md5' ], | ||
type: ['asc', 'utf', 'buf'], | ||
out: ['hex', 'binary', 'buffer'], | ||
len: [2, 1024, 102400, 1024 * 1024], | ||
api: ['legacy', 'stream'] | ||
}); | ||
|
||
function main(conf) { | ||
var api = conf.api; | ||
if (api === 'stream' && process.version.match(/^v0\.[0-8]\./)) { | ||
console.error('Crypto streams not available until v0.10'); | ||
// use the legacy, just so that we can compare them. | ||
api = 'legacy'; | ||
} | ||
|
||
var crypto = require('crypto'); | ||
var assert = require('assert'); | ||
|
||
var message; | ||
var encoding; | ||
switch (conf.type) { | ||
case 'asc': | ||
message = new Array(conf.len + 1).join('a'); | ||
encoding = 'ascii'; | ||
break; | ||
case 'utf': | ||
message = new Array(conf.len / 2 + 1).join('ü'); | ||
encoding = 'utf8'; | ||
break; | ||
case 'buf': | ||
message = new Buffer(conf.len); | ||
message.fill('b'); | ||
break; | ||
default: | ||
throw new Error('unknown message type: ' + conf.type); | ||
} | ||
|
||
var fn = api === 'stream' ? streamWrite : legacyWrite; | ||
|
||
bench.start(); | ||
fn(conf.algo, message, encoding, conf.writes, conf.len, conf.out); | ||
} | ||
|
||
function legacyWrite(algo, message, encoding, writes, len, outEnc) { | ||
var written = writes * len; | ||
var bits = written * 8; | ||
var gbits = bits / (1024 * 1024 * 1024); | ||
|
||
while (writes-- > 0) { | ||
var h = crypto.createHash(algo); | ||
h.update(message, encoding); | ||
var res = h.digest(outEnc); | ||
|
||
// include buffer creation costs for older versions | ||
if (outEnc === 'buffer' && typeof res === 'string') | ||
res = new Buffer(res, 'binary'); | ||
} | ||
|
||
bench.end(gbits); | ||
} | ||
|
||
function streamWrite(algo, message, encoding, writes, len, outEnc) { | ||
var written = writes * len; | ||
var bits = written * 8; | ||
var gbits = bits / (1024 * 1024 * 1024); | ||
|
||
while (writes-- > 0) { | ||
var h = crypto.createHash(algo); | ||
|
||
if (outEnc !== 'buffer') | ||
h.setEncoding(outEnc); | ||
|
||
h.write(message, encoding); | ||
h.end(); | ||
h.read(); | ||
} | ||
|
||
bench.end(gbits); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
// throughput benchmark | ||
// creates a single hasher, then pushes a bunch of data through it | ||
var common = require('../common.js'); | ||
var crypto = require('crypto'); | ||
|
||
var bench = common.createBenchmark(main, { | ||
writes: [500], | ||
algo: [ 'sha256', 'md5' ], | ||
type: ['asc', 'utf', 'buf'], | ||
len: [2, 1024, 102400, 1024 * 1024], | ||
api: ['legacy', 'stream'] | ||
}); | ||
|
||
function main(conf) { | ||
var api = conf.api; | ||
if (api === 'stream' && process.version.match(/^v0\.[0-8]\./)) { | ||
console.error('Crypto streams not available until v0.10'); | ||
// use the legacy, just so that we can compare them. | ||
api = 'legacy'; | ||
} | ||
|
||
var crypto = require('crypto'); | ||
var assert = require('assert'); | ||
|
||
var message; | ||
var encoding; | ||
switch (conf.type) { | ||
case 'asc': | ||
message = new Array(conf.len + 1).join('a'); | ||
encoding = 'ascii'; | ||
break; | ||
case 'utf': | ||
message = new Array(conf.len / 2 + 1).join('ü'); | ||
encoding = 'utf8'; | ||
break; | ||
case 'buf': | ||
message = new Buffer(conf.len); | ||
message.fill('b'); | ||
break; | ||
default: | ||
throw new Error('unknown message type: ' + conf.type); | ||
} | ||
|
||
var fn = api === 'stream' ? streamWrite : legacyWrite; | ||
|
||
bench.start(); | ||
fn(conf.algo, message, encoding, conf.writes, conf.len); | ||
} | ||
|
||
function legacyWrite(algo, message, encoding, writes, len) { | ||
var written = writes * len; | ||
var bits = written * 8; | ||
var gbits = bits / (1024 * 1024 * 1024); | ||
var h = crypto.createHash(algo); | ||
|
||
while (writes-- > 0) | ||
h.update(message, encoding); | ||
|
||
h.digest(); | ||
|
||
bench.end(gbits); | ||
} | ||
|
||
function streamWrite(algo, message, encoding, writes, len) { | ||
var written = writes * len; | ||
var bits = written * 8; | ||
var gbits = bits / (1024 * 1024 * 1024); | ||
var h = crypto.createHash(algo); | ||
|
||
while (writes-- > 0) | ||
h.write(message, encoding); | ||
|
||
h.end(); | ||
h.read(); | ||
|
||
bench.end(gbits); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.