递归md5散列基准函数返回高度变化的延迟

时间:2014-07-12 04:00:41

标签: javascript node.js

考虑以下NodeJS程序。

var crypto = require('crypto');
var overall = new Date().getMilliseconds();

var hashme = function myself(times){
    times--;
    if(times > 0){
        var name = new Buffer(100000).toString('utf8') + times;
        var hash = crypto.createHash('md5').update(name).digest("hex");
        console.log(hash);
        myself(times)
    }
    else{
        return console.log('Finished in ' + (new Date().getMilliseconds() - overall) + 'ms.')
    }
}

hashme(400)

它创建一个10000字节的新字符串缓冲区,将其与迭代值一起使用,然后计算缓冲区的md5总和,并记录完成后经过的时间。

当我运行程序时,每次运行时,我会在200ms到600ms之间得到截然不同的结果。

这里发生了什么?

1 个答案:

答案 0 :(得分:1)

创建缓冲区并调用toString()将成为延迟的一部分。因此,您不仅仅需要在那里进行哈希计时。将缓冲区创建和toString()排除在等式之外,您将获得更加准确和精确的读数。