recursionmd5散列基准函数返回高度变化的延迟

考虑下面的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) 

它会创build一个10000字节的新string缓冲区,并将其与迭代值相关联,然后计算缓冲区的md5总和,并logging完成时的已用时间。

当我运行这个程序的时候,每次运行的时候,我都会得到200ms和600ms之间差别很大的结果。

这里发生了什么?

创build一个缓冲区并调用toString()将成为该延迟的一部分。 所以你的时间不仅仅是在那里哈希。 将缓冲区创build和toString()从等式中取出,您将获得更加准确和精确的读数。