From 6582e29a7e2633caec7e73a37daa976e70286fd5 Mon Sep 17 00:00:00 2001 From: Kirill Fomichev Date: Fri, 12 Feb 2016 13:21:36 +0300 Subject: [PATCH] benchmark: replace seedable fixture generator Replace sha256-hash based generator to XorShift128+ from package xorshift.js --- benchmarks/index.js | 14 +++++++------- benchmarks/package.json | 7 ++++--- benchmarks/prng.js | 32 -------------------------------- 3 files changed, 11 insertions(+), 42 deletions(-) delete mode 100644 benchmarks/prng.js diff --git a/benchmarks/index.js b/benchmarks/index.js index 229eb9d..3d15563 100644 --- a/benchmarks/index.js +++ b/benchmarks/index.js @@ -2,19 +2,19 @@ var benchmark = require('benchmark'); var crypto = require('crypto'); -var PRNG = require('./prng'); var bn = require('../'); var bignum = require('bignum'); var sjcl = require('eccjs').sjcl.bn; var bigi = require('bigi'); var BigInteger = require('js-big-integer').BigInteger; var SilentMattBigInteger = require('biginteger').BigInteger; +var XorShift128Plus = require('xorshift.js').XorShift128Plus; var benchmarks = []; var selfOnly = process.env.SELF_ONLY; -var seed = process.env.SEED || crypto.randomBytes(32).toString('hex'); +var seed = process.env.SEED || crypto.randomBytes(16).toString('hex'); console.log('Seed: ' + seed); -var prng = new PRNG(seed); +var prng = new XorShift128Plus(seed); var fixtures = []; var findex = 0; @@ -87,10 +87,10 @@ while (fixtures.length < 25) { var fixture = {}; fixtures.push(fixture); - var a = prng.getHexString(64); - var b = prng.getHexString(64); - var aj = prng.getHexString(1536); - var bj = prng.getHexString(1536); + var a = prng.randomBytes(32).toString('hex'); + var b = prng.randomBytes(32).toString('hex'); + var aj = prng.randomBytes(768).toString('hex'); + var bj = prng.randomBytes(768).toString('hex'); // BN fixture.a1 = new bn(a, 16); diff --git a/benchmarks/package.json b/benchmarks/package.json index 1aababf..56b7faf 100644 --- a/benchmarks/package.json +++ b/benchmarks/package.json @@ -10,10 +10,11 @@ "license": "MIT", "dependencies": { "benchmark": "^1.0.0", - "bignum": "^0.11.0", - "eccjs": "^0.3.1", "bigi": "*", "biginteger": "*", - "js-big-integer": "*" + "bignum": "^0.11.0", + "eccjs": "^0.3.1", + "js-big-integer": "*", + "xorshift.js": "^1.0.0" } } diff --git a/benchmarks/prng.js b/benchmarks/prng.js deleted file mode 100644 index 50a14d3..0000000 --- a/benchmarks/prng.js +++ /dev/null @@ -1,32 +0,0 @@ -'use strict'; - -var crypto = require('crypto'); - -/** - * @class PRNG - * @constructor - * @param {string} seed - */ -function PRNG (seed) { - this._seed = seed; - this._count = 0; - this._digest = ''; -} - -/** - * @param {number} count - * @return {string} - */ -PRNG.prototype.getHexString = function (count) { - while (count > this._digest.length) { - var data = this._seed + (this._count++).toString(16); - var digest = crypto.createHash('sha256').update(data).digest('hex'); - this._digest = this._digest.concat(digest); - } - - var result = this._digest.slice(0, count); - this._digest = this._digest.slice(count); - return result; -}; - -module.exports = PRNG;