golang rsa 和 cgo (openssl) 性能对比

fireblue火蓝 · · 7292 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

最近在做一个 使用 golang 开发 聚合支付网关的项目,其中要使用 rsa 签名算法 进行支付宝参数签名, 在压测 的时候发现 rsa 签名 性能十分低下,网上查资料 有人说 使用 openssl 的速度是 golang 的数倍, 于是我就用cgo (openssl) 和 golang rsa 做了一个对比,发现居然相差五倍,openssl 完胜。

下面是我的实现代码地址,有兴趣的可以下载运行试一下

https://github.com/Bulesxz/rsa_cgo.git

运行

go get github.com/Bulesxz/rsa_cgo

go test -bench="."

测试环境:

硬件概览:
  型号名称: MacBook Pro
  型号标识符:    MacBookPro13,2
  处理器名称:    Intel Core i5
  处理器速度:    3.1 GHz
  处理器数目:    1
  核总数:  2
  L2 缓存(每个核):   256 KB
  L3 缓存:    4 MB
  内存:   16 GB

os: osx 10.12.3

openssl: OpenSSL 1.1.0f  25 May 2017

golang: go version go1.8.3 darwin/amd64

经过测试 发现cgo openssl 的性能是 golang 的 5倍左右 ,5倍!!!!!

BenchmarkGoRsa-4            2000            670399 ns/op
BenchmarkCgoRsa-4          10000            122419 ns/op

场景应用

使用golang rsa 签名的 高并发 程序,比如聚合支付相关(支付宝API)

注意

本人的openssl 安装在 /usr/local/Cellar/openssl@1.1/1.1.0f/ 不在此目录的可以视情况而改动 makefile


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:fireblue火蓝

查看原文:golang rsa 和 cgo (openssl) 性能对比

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

7292 次点击  
加入收藏 微博
1 回复  |  直到 2017-08-27 13:38:47
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传