【记录一个问题】golang 中的 ecdsa(椭圆曲线加密) 算法很慢,因为用到了系统调用
代码中使用了椭圆曲线算法来签名,实际运行中发现不够快:
func BenchmarkECDSA(b *testing.B) {
privateKeyInst, err := parseSignatureKey(privateKey)
if err != nil {
b.Error(err.Error())
return
}
k := privateKeyInst.(*sysecdsa.PrivateKey)
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, _ = sysecdsa.SignASN1(rand.Reader, k, sha256Hash[:])
}
}
在 macbook m2 下的 benchmark 为:
18044 ns/op 2440 B/op 33 allocs/op
profile 信息如下:

几乎全部消耗在 unix.getentropy 这个系统调用上。
本来还想优化以下,系统调用这个层面的优化比较耗时。先记下来,后面再想办法。
P.S 找到另一个库,号称 fast ,实际测试比系统库慢 100 倍:
https://github.com/starkbank/ecdsa-go
【记录一个问题】golang 中的 ecdsa(椭圆曲线加密) 算法很慢,因为用到了系统调用的更多相关文章
- [每天记录一个Bug]Cell中由于block加载网络请求产生的复用
Bug 出现场景: cell中使用加载图片的网络请求出现复用,截图如下: 复用原因: Cell Model中只有一个用户的uid,所有用户相关信息:例如头像\名称\信息等是通过 ...
- golang中sha256、md5加密,base64encode、base64decode
package tool import ( "crypto/md5" "crypto/sha256" "encoding/base64" & ...
- 需求:一个页面中需要用到多个字典数据。用于下拉选项,同时,需要将其保存为json格式。以便于key,value的相互转换。记录在实现过程中踩的坑
本文涉及到的知识: Promise,all()的使用 js处理机制 reduce的用法 map的用法 同步异步 需求: 一个页面中需要用到多个字典数据.用于下拉选项,同时,需要将其保存为json格式. ...
- Golang 中操作 Mongo Update 的方法
Golang 和 MongoDB 中的 ISODate 时间交互问题 2018年02月27日 11:28:43 独一无二的小个性 阅读数:357 标签: GolangMongoDB时间交互时间转换 更 ...
- HTTPS相关知识以及在golang中的应用
最近简单学习了HTTPS,并在golang中实践了一下,现在把学到的知识记录下来,方便以后查看,如果有幸能帮到有需要的人就更好了,如果有错误欢迎留言指出. 一些简单的概念,可以自行百度百科 HTTPS ...
- golang中type常用用法
golang中,type是非常重要的关键字,一般常见用法就是定义结构,接口等,但是type还有很多其它的用法,在学习中遇到了以下几种,这点简单总结记录下 定义结构 type Person struct ...
- 在Golang中如何正确地使用database/sql包访问数据库
本文记录了我在实际工作中关于数据库操作上一些小经验,也是新手入门golang时我认为一定会碰到问题,没有什么高大上的东西,所以希望能抛砖引玉,也算是对这个问题的一次总结. 其实我也是一个新手,机缘巧合 ...
- golang中的RPC开发-2
RPC简介 远程过程调用(Remote Procedure Call,RPC)是一个计算机通信协议 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程 如果 ...
- golang中的反射reflect详解
先重复一遍反射三定律: 1.反射可以将"接口类型变量"转换为"反射类型对象". 2.反射可以将"反射类型对象"转换为"接口类型变量 ...
- Golang中常用的代码优化点
Golang中常用的代码优化点 大家好,我是轩脉刃. 这篇想和大家聊一聊golang的常用代码写法.在golang中,如果大家不断在一线写代码,一定多多少少会有一些些代码的套路和经验.这些经验是代表你 ...
随机推荐
- iOS打包IPA教程
转载:xcode打包导出ipa 众所周知,在开发苹果应用时需要使用签名(证书)才能进行打包安装苹果 IPA,作为刚接触ios开发的同学,只是学习ios app开发内测,并没有上架appstore需 ...
- Java 轻量开发框架 Solon 1.4.4 发布 ,完善分布式任务规范
Solon 是一个轻量的Java基础开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Job.Micro service.WebS ...
- MongoDB 客户端工具,Studio3T 无法启动
阿里云 MongoDB 创建库添加用户并授权 MongoDB 客户端工具,Studio3T 无法启动,原因可能是因为本地的 java 版本导致 C:\Users\cj218>java -vers ...
- ME21N 采购订单新增页签增强
1.实现效果 根据客制化需求,要在采购订单中新增大量字段,所以要在界面上添加一个单独的页签.效果如下: 2.增强实现 2.1.增强结构 因为是在抬头上边添加,所以增强CI_EKKODB结构 2.2.函 ...
- .NET 6 整合 Autofac 依赖注入容器
前言 一行业务代码还没写,框架代码一大堆,不利于学习. 常看到java的学习资料或博客,标题一般为<SpringBoot 整合 XXX>,所以仿照着写了<.NET 6 整合 Auto ...
- Cpp 惯用法 CRTP 简介
From Wikipedia, The curiously recurring template pattern (CRTP) is an idiom, originally in C++, in w ...
- Gosper's Hack (生成 n元集合所有 k 元子集
Gosper's Hack是一种生成 n元集合所有 k元子集的算法,它巧妙地利用了位运算 void GospersHack(int k, int n) { int cur = (1 << ...
- MySQL 的 crash-safe 原理解析
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/5i9wmJs4_Er7RaYfNnETyA作者:xieweipeng MySQL作为当下最流行 ...
- 使用element-plus的el-scrollbar时滚动条没有显示出来但是页面可以滚动的解决办法
如果使用 Element UI 的 el-scrollbar 组件时,滚动条没有显示出来但页面可以滚动,可以尝试调用其 update 方法来更新滚动条. 在适当的时机(例如在数据加载完成后或组件更新后 ...
- Chrome/Edge 设置黑色主题
Chrome chrome://flags/#enable-force-dark Edge edge://flags/#enable-force-dark