不同程序语言处理加密算法的性能对比(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 (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.不 ...
随机推荐
- 4. Eclipse集成Git
4.1 Git插件 Eclipse中已经内置了Git插件 4.2 把工程初始化为本地库 初始化 设置本地库范围的签名 4.3 Git图标 4.4 Eclipse特定文件 Eclispe特定文件介绍 为 ...
- 容器中实现拉取其它服务器的jar包程序
缘由:在做接口自动化测试时,若业务场景有一个前置仓库,在该仓库内完成一系列的场景测试,一旦某一场景测试失败,脏数据对环境造成影响则需要清理: 1.我容器的内核系统为Debian GNU/Linux 1 ...
- 通过weakHashMap避免过期引用导致的内存泄漏
问题由来 数组为基础实现的集合在退出元素时,并不会将引用指向空指针,过期引用存在对象便不会被回收. 措施 1.WeakHashMap当其中的key没有再被外部引用时,就会被回收.ThreadLocal ...
- JS基础入门,知识点总结归纳图
- 基于 RabbitMQ-EasyNetQ 实现.NET与Go的消息调度交互
基于 RabbitMQ 实现跨语言的消息调度 微服务的盛行,使我们由原来的单机"巨服务"的项目拆分成了不同的业务相对独立的模块,以及与业务不相关的中间件模块.这样我们免不了在公司不 ...
- SpringBoot中的Tomcat是如何启动的?
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>s ...
- Monkey 部署环境
Monkey的介绍 它是Android系统自带一个命令行工具,可以运行在模拟器里或者真是设备中运行. Monkey是发送伪随机用户事件的工具. Monkey向系统发送伪随机的用户事件流,实现对正在开发 ...
- C++详解(8-9)
八. C++函数的高级特性 对比于C语言的函数,C++增加了重载(overloaded).内联(inline).const和virtual四种新机制.其中重载和内联机制既可用于全局函数也可用于类的成员 ...
- go学习的第7天
不容易啊,坚持7天了呢,今天开始看视频学习 https://www.bilibili.com/video/BV1pt41127FZ?from=search&seid=4441824587572 ...
- linux服务器性能分析只需1分钟
背景: 现在的互联网公司,大多数时候应用服务都是部署在linux服务器上,那么当你的服务运行过程中出现了一些响应慢,资源瓶颈等疑似性能问题时,给你60秒,如何快速完成初步检测? 肯定有人会说用工具,公 ...