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

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

运行

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

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

cgo的效率 golang_golang rsa 和 cgo (openssl) 性能对比相关推荐

  1. cgo的效率 golang_golang CGO FAQ TIPS : cgo 从 C 传递 slice 到 go

    cgo 从 C 传递 slice 到 go 这里一般会用在c的callback中. 需要加一个wrapper,比直接调用go函数中间多了一个转换步骤,但方便了许多. 执行流程为,c调用发起 -> ...

  2. Mysql join效率_mysql 子查询与join性能对比

    有如下的数据表: application_daily 11万条数据 application_info400多条数据 查询结果数据为19498 来看下mysql 子查询的例子. 例1,子查询 (0.01 ...

  3. cimage和gdi绘图效率比较_GDI+和GDI绘图性能对比实验

    龙源期刊网 http://www.qikan.com.cn GDI+ 和 GDI 绘图性能对比实验 作者:王克茹 来源:<科技创新与应用> 2013 年第 25 期 摘 要:本文通过完全相 ...

  4. 支付宝开放平台 配置RSA(SHA1)密钥 OpenSSL配置公钥私钥对

    支付宝开放平台 配置RSA(SHA1)密钥 OpenSSL配置公钥私钥对 进入到第一次配置支付宝支付服务了 配置支付宝服务,需要去支付宝的开放平台申请服务 需要设置一些参数 其中需要在后台设置配置RS ...

  5. Java(111):非对称加密RSA的使用(openssl生成RSA公私钥对)

    Java(111):非对称加密RSA的使用(openssl生成RSA公私钥对) 1.openssl生成RSA公私钥对 [root@loaclhost ~]# openssl version OpenS ...

  6. java sort 效率_性能对比:collections.sort vs treeSet sort vs java8 stream.sorted

    0 写在前面的话 在项目中有一个排序问题,考虑到未来需要排序的数据量可能很大,想用一个性能较好的排序算法,现在有三套解决方法:jdk提供的集合的sort方法(Collections.sort).一个可 ...

  7. oracle数据泵效率,oracle技术之oracle 10g数据泵和导入导出性能对比(五)

    前一段时间在一次迁移中同时用到了数据泵和EXP,发现二者效率的差别还是相当大的.这里通过一个例子简单比较一下. 这篇文章讨论影响数据泵导入性能的最大因素. 前面写了几篇文章,分别介绍EXP/IMP与E ...

  8. Java文件读取方式和效率性能对比

    场景描述 文件大小 8.67G的json文件,一共670万行. 服务器内存:2g.(只能读取一定缓冲数据,然后处理后继续读取,不能一次性加载到内存) 读取文件的内容出来,并未做业务处理. 读取方式和性 ...

  9. 非对称加密算法之RSA介绍及OpenSSL中RSA常用函数使用举例

    RSA算法,在1977年由Ron Rivest.Adi Shamirh和LenAdleman,在美国的麻省理工学院开发完成.这个算法的名字,来源于三位开发者的名字.RSA已经成为公钥数据加密标准. R ...

  10. asp.net python 开发web 效率_【Django】Python web开发:几个模板系统的性能对比(转)...

    http://blog.chedushi.com/archives/910 结论: 点评一下吧.django就是个渣,不多废话了.webpy的代码很简洁,可惜速度太慢了.bottle看起来快一点,不过 ...

最新文章

  1. Oracle数据库名与Oracle实例名的关系
  2. IO流(IO异常处理方式)
  3. 安装memcached服务 和 php 安装memcache扩展
  4. POJ2527(两多项式取余)
  5. java 制作小游戏_如何用java制作小游戏
  6. js打乱数组的顺序_如何用 js 实现一个类似微信红包的随机算法
  7. C#高级技师语法,你会吗?
  8. react学习(70)--拼接方式
  9. 瀑布流插件|jquery.masonry|使用demo
  10. java jtable不可编辑_java – 使JTable单元不可编辑
  11. 加快Vue项目的开发速度
  12. 不忘初心,恪守信条:微盟经历的从删库到跑路的数据灾难
  13. 【Objective-C学习记录】第一天
  14. sql server 快照_SQL Server复制:配置快照和事务复制
  15. MFC 教程【13_MFC工具条和状态栏 】
  16. 交警对开车人的“真言”
  17. 定制石墨烯水溶液-齐岳生物
  18. DBPedia知识图谱详细介绍
  19. 软件集合贴:学软件测试必备软件,看这里足足够了
  20. 熔断器Hystrix配置及使用

热门文章

  1. spring实现在一个类中调用另一个类的方法
  2. 奇葩错误SLF4J: Failed to load class org.slf4j。。的修复
  3. oracle启动数据库错误
  4. TimesTen数据库使用之点滴(1)
  5. 大刀阔斧,抽丝剥茧:评红黑树系列文章
  6. 缺少网卡固件导致的网络服务异常,Can‘t load firmware file bnx2x/bnx2x-e2-7.13.15.0.fw
  7. Virtual Routing and Forwarding
  8. 多线程编程(Linux C)
  9. linux 读写信号量学习
  10. android Studio Error: 前言中不允许有内容