首先上我最常用且最易用的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))
}

最新文章

  1. MySQL运行状态show status详解
  2. Spring+SpringMVC+MyBatis+LogBack+C3P0+Maven+Git小结(转)
  3. HTML5优秀图表控件
  4. [测试] Firemonkey Android 照相自订分辨率测试
  5. get_free_page
  6. springfox.documentation.service.ApiInfo配置示例
  7. JSon_零基础_005_将po(bean)对象集合List转换为JSon格式的对象字符串,返回给界面
  8. span标签之间的空隙
  9. Android实例-拍摄和分享照片、分享文本(XE8+小米2)
  10. Extjs6(五)——写一个包含toolbar、form、grid的子页面
  11. MySQL .msi 安装失败改用.zip安装步骤
  12. ES2018新特性(译文)
  13. js模块化规范—commonjs
  14. UUID类型如何比较是否相等
  15. 距离LCA离线算法Tarjan + dfs + 并查集
  16. KVM源代码解读:linux-3.17.4\arch\x86\include\asm\kvm_host.h
  17. Crawl(2)
  18. (转) Linux 内核运行参数修改——sysctl命令
  19. 正经学C#_变量与其数据类型:《c#入门经典》
  20. 用express框架实现反向代理

热门文章

  1. java抽象类,多态1
  2. 交换机Access、Trunk和Hybrid 接口类型及区别
  3. 生成微博授权URL及回调地址
  4. getElementBy系列和querySelector系列的区别
  5. 浅尝 Elastic Stack (二) Logstash
  6. kafka 消费组功能验证以及消费者数据重复数据丢失问题说明 3
  7. 第15.24节 PyQt(Python+Qt)入门学习:Model/View架构中QTableView的作用及属性详解
  8. 上传到github
  9. Llbp2p是什么?
  10. WPF中DatePiker值绑定以及精简查询