记录下一次md2亿次跑分测试的数据分别用nodejs/python/php跑和对比

10 篇文章 2 订阅
4 篇文章 1 订阅

一亿次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会快很多,毕竟不需要重新创建新对象了(猜的 没空验证 就这样吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AKULAKK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值