一亿次md2计算
nodejs耗时 1000秒
php耗时 920秒
python耗时3600秒(一定是我写法没对)
var md2 = require('js-md2')
Date.prototype.Format = function (fmt) { // author: meizz
var o = {
"M+": this.getMonth() + 1, // 月份
"d+": this.getDate(), // 日
"h+": this.getHours(), // 小时
"m+": this.getMinutes(), // 分
"s+": this.getSeconds(), // 秒
"q+": Math.floor((this.getMonth() + 3) / 3), // 季度
"S": this.getMilliseconds() // 毫秒
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
let str = '39'
const max = 100000000
console.log('ready to use:'+str)
console.log(new Date().Format("yyyy-MM-dd hh:mm:ss"))
for(i=0;i<max;i++){
str = md2(new Buffer.from(str, 'utf8').toString())
}
console.log(new Date().Format("yyyy-MM-dd hh:mm:ss"))
console.log(str)
PHP的
<?
$str = '39';
$max = '100000000';
echo 'ready to use:'.$str;
echo PHP_EOL."start at ".date('Y-m-d H:i:s');
$unix_start = time();
for($i=0;$i<$max;$i++){
//printf("%f \n",$i/$max * 100);
$str = hash('md2',utf8_encode($str));
}
echo PHP_EOL."end at ".date('Y-m-d H:i:s');
echo PHP_EOL."total:".(time()-$unix_start);
echo PHP_EOL;
echo $str;
python的
from Cryptodome.Hash import MD2
import time
str1 = '39'
count = 0
max = 100000000
print('start {0} at {1}'.format(str1, time.localtime(time.time())))
for _ in range(max):
count = count + 1
# print('{0}%'.format((count/max)*100), end='\r', flush=True)
str1 = MD2.new(str1.encode(encoding="utf-8")).hexdigest() # 执行一亿次编码
print('end at {0}'.format(time.localtime(time.time())))
print(str1)
应该把new改为update会快很多,毕竟不需要重新创建新对象了(猜的 没空验证 就这样吧