不同程序语言处理加密算法的性能对比(PHP/Golang/NodeJS)
首先上我最常用且最易用的PHP来做下测试
<?php
function test_encrypt($fun, $max) {
$begin = microtime(TRUE);
$pwdpre = time();
for ($i = 1; $i <= $max; $i++) {
$fun($pwdpre . $i);
}
echo $fun . ' => ' . number_format((microtime(TRUE) - $begin) * 1000, 2) . ' ms' . "\r\n";
}
test_encrypt('crc32', 1000 * 1000); //165.52ms
test_encrypt('md5', 1000 * 1000); //390.99ms
test_encrypt('sha1', 1000 * 1000); //488.63.ms
下面贴上很多人觉得性能不错的Golang来做下测试
package main import (
"crypto/md5"
"crypto/sha1"
"encoding/hex"
"fmt"
"hash/crc32"
"strconv"
"time"
) func main() {
test_encrypt("CRC32", 1000*1000) // 162.1024 ms
test_encrypt("MD5", 1000*1000) // 525.0696 ms
test_encrypt("SHA1", 1000*1000) // 586.758 ms
} func test_encrypt(fun string, max int) {
pwdpre := strconv.FormatInt(time.Now().Unix(), 10)
begin := time.Now().UnixNano()
for i := 1; i <= max; i++ {
switch fun {
case "CRC32":
CRC32(pwdpre + strconv.Itoa(i))
case "MD5":
MD5(pwdpre + strconv.Itoa(i))
case "SHA1":
SHA1(pwdpre + strconv.Itoa(i))
} }
end := time.Now().UnixNano()
fmt.Println(fun, "=>", float64(end-begin)/1e6, "ms")
}
func MD5(str string) string {
// 取得16进制文本MD5
h := md5.New()
h.Write([]byte(str))
return hex.EncodeToString(h.Sum(nil))
} func SHA1(str string) string {
// 取得16进制文本SHA1
c := sha1.New()
c.Write([]byte(str))
return hex.EncodeToString(c.Sum(nil))
} func CRC32(str string) uint32 {
// 取得无符号32位整型CRC32
return crc32.ChecksumIEEE([]byte(str))
}
不同程序语言处理加密算法的性能对比(PHP/Golang/NodeJS)的更多相关文章
- 2017年的golang、python、php、c++、c、java、Nodejs性能对比(golang python php c++ java Nodejs Performance)
2017年的golang.python.php.c++.c.java.Nodejs性能对比 本人在PHP/C++/Go/Py时,突发奇想,想把最近主流的编程语言性能作个简单的比较, 至于怎么比,还是不 ...
- 2017年的golang、python、php、c++、c、java、Nodejs性能对比[续]
2017年的golang.python.php.c++.c.java.Nodejs性能对比[续] 最近忙,这个话题放了几天,今天来个续集. 上篇传送门: 2017年的golang.python.p ...
- 开发语言性能对比,C++、Java、Python、LUA、TCC
一直想做开发语言性能对比,刚好有时间都做了给大家参考一下, 编译类:C++和Java表现还不错 脚本类:TCC脚本动态运行C语言,性能比其他脚本快好多... 想玩TCC的同学下载测试包,TCC目录下修 ...
- 求斐波那契数列第n位的几种实现方式及性能对比(c#语言)
在每一种编程语言里,斐波那契数列的计算方式都是一个经典的话题.它可能有很多种计算方式,例如:递归.迭代.数学公式.哪种算法最容易理解,哪种算法是性能最好的呢? 这里给大家分享一下我对它的研究和总结:下 ...
- 数学语言和程序语言的对比:面向过程与面向集合&命题
共同之处:都使用字符串或数值来引用一个客观实体.当然数字和字符串也可以作为实体对象,这取决于人的解释. 不同之处:数学语句每一行都给出了一个结论, 程序语句的每一行都定义了一个过程.注意这里所指的程序 ...
- Oracle学习总结(8)—— 面向程序员的数据库访问性能优化法则
特别说明: 1. 本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2. 本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也 ...
- MyISAM与InnoDB两者之间区别与选择,详细总结,性能对比
1.MyISAM:默认表类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.不 ...
- Python 读取图像文件的性能对比
Python 读取图像文件的性能对比 使用 Python 读取一个保存在本地硬盘上的视频文件,视频文件的编码方式是使用的原始的 RGBA 格式写入的,即无压缩的原始视频文件.最开始直接使用 Pytho ...
- MYSQL 中 MyISAM与InnoDB两者之间区别与选择,详细总结,性能对比
1.MyISAM:默认表类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.不 ...
随机推荐
- yum安装软件时报错libmysqlclient.so.18()(64bit)
错误信息 yum -y install sysbench 安装sysbench提示缺少依赖包如下图: 主要原因 缺少Percona-XtraDB-Cluster-shared-55-5.5.37-25 ...
- Codeforces Round #668 C. Balanced Bitstring (Div. 2)题解(思维)
题目链接 题目大意 给你一个长为n的01串,要你使得每一个01串中0和1的个数都要相等,01串中有?字符,你可以使得这个字符变为0或1,要你求是否可以满足条件.输出YES或NO 题目思路 这个题目的难 ...
- 解决YUM下Loaded plugins: fastestmirror Determining fastest mirrors 的错误问题
最近想再购买一台虚拟服务器做项目测试,之前在西部数码购买的已经过期了,在同事的推荐下去搬瓦工购买了一台服务器,听他介绍在这里购买服务器很便宜($19.99/年)而且还是国外的,看着相比之前的确实挺便宜 ...
- 《Spring Boot 实战纪实》之如何攥写需求文档
目录 前言 (思维篇)人人都是产品经理 1.需求文档 1.1 需求管理 1.2 如何攥写需求文档 1.3 需求关键点文档 2 原型设计 2.1 缺失的逻辑 2.2 让想法跃然纸上 3 开发设计文档 3 ...
- @Transactional自调用问题
- mysql GTID主从复制故障后不停机恢复同步流程
GTID实现主从复制数据同步 GTID是一个基于原始mysql服务器生成的一个已经被成功执行的全局事务ID,它由服务器ID以及事务ID组成,这个全局事务ID不仅仅在原始服务器上唯一,在所有主从关系的m ...
- Spring Cloud 学习 (二) Ribbon
负载均衡是指将负载分摊到多个执行单元上,常见的负载均衡有两种方式:一种是独立进程单元,通过负载均衡策略,将请求转发到不同的执行单元上,例如 Ngnix:另一种是将负载均衡逻辑以代码的形式封装到服务消费 ...
- java并发编程实战《六》等待-通知机制
用"等待-通知"机制优化循环等待 前言 在破坏占用且等待条件的时候,如果转出账本和转入账本不满足同时在文件架上这个条件,就用死循环的方式来循环等待. 1 // 一次性申请转出账户和 ...
- moviepy音视频剪辑:视频半自动追踪人脸打马赛克
一.引言 在<moviepy1.03音视频剪辑:使用manual_tracking和headblur实现追踪人脸打马赛克>介绍了使用手动跟踪跟踪人脸移动轨迹和使用headblur对人脸进行 ...
- AutumnWater 秋水SRC平台
持续给自己挖坑,简单介绍一下AutumnWater 秋水SRC平台趴: SRC开源漏洞响应平台 AutumnWater 秋水SRC平台 后端使用Python-Flask(蓝图)编写 前端使用少量VUE ...