通过修改lib.rs文件,将fieldbackendmodule改为pub。
通过性能对比发现在curve25519-dalek库的代码实现,实际field域内计算速度优于scalar域内的计算性能。

针对field域内的加减乘除和scalar域内的加减乘除运算对应的bench代码如下:

mod scalar_benches {use super::*;fn scalar_inversion(c: &mut Criterion) {c.bench_function("Scalar inversion", |b| {let s = Scalar::from(897987897u64).invert();b.iter(|| s.invert());});}fn scalar_mul(c: &mut Criterion) {c.bench_function("Scalar multiplication", |b| {let s = Scalar::from(897987897u64).invert();b.iter(|| s*s);});}fn scalar_add(c: &mut Criterion) {c.bench_function("Scalar add", |b| {let s = Scalar::from(897987897u64).invert();b.iter(|| s+s);});}fn scalar_sub(c: &mut Criterion) {c.bench_function("Scalar sub", |b| {let s = Scalar::from(897987897u64).invert();b.iter(|| s-s);});}fn batch_scalar_inversion(c: &mut Criterion) {c.bench_function_over_inputs("Batch scalar inversion",|b, &&size| {let mut rng = OsRng::new().unwrap();let scalars: Vec<Scalar> = (0..size).map(|_| Scalar::random(&mut rng)).collect();b.iter(|| {let mut s = scalars.clone();Scalar::batch_invert(&mut s);});},&BATCH_SIZES,);}criterion_group! {name = scalar_benches;config = Criterion::default();targets =scalar_inversion,scalar_mul,scalar_add,scalar_sub,//batch_scalar_inversion,}
}mod field_benches {use super::*;fn field_inversion(c: &mut Criterion) {c.bench_function("field inversion", |b| {let a: [u8; 32] = [ //0x35863539  as 897987897u640x39, 0x35, 0x86, 0x35, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];let s = FieldElement::from_bytes(&a).invert();b.iter(|| s.invert());});}fn field_mul(c: &mut Criterion) {c.bench_function("field multiplication", |b| {let a: [u8; 32] = [ //0x35863539  as 897987897u640x39, 0x35, 0x86, 0x35, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];let s = FieldElement::from_bytes(&a).invert();b.iter(|| &s * &s );});}fn field_add(c: &mut Criterion) {c.bench_function("field add", |b| {let a: [u8; 32] = [ //0x35863539  as 897987897u640x39, 0x35, 0x86, 0x35, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];let s = FieldElement::from_bytes(&a).invert();b.iter(|| &s + &s );});}fn field_sub(c: &mut Criterion) {c.bench_function("field sub", |b| {let a: [u8; 32] = [ //0x35863539  as 897987897u640x39, 0x35, 0x86, 0x35, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];let s = FieldElement::from_bytes(&a).invert();b.iter(|| &s - &s );});}criterion_group! {name = field_benches;config = Criterion::default();targets =field_inversion,field_mul,field_sub,field_add,}
}

在1核4G内存Ubuntu16.04系统下运行性能如下:

unning target/release/deps/dalek_benchmarks-53fcb1faec6cb376
Scalar inversion        time:   [11.761 us 11.819 us 11.893 us]change: [-13.746% +0.2914% +17.272%] (p = 0.97 > 0.05)No change in performance detected.
Found 17 outliers among 100 measurements (17.00%)1 (1.00%) high mild16 (16.00%) high severeScalar multiplication   time:   [170.81 ns 193.62 ns 218.47 ns]change: [+2.0752% +17.017% +34.861%] (p = 0.03 < 0.05)Performance has regressed.
Found 5 outliers among 100 measurements (5.00%)3 (3.00%) high mild2 (2.00%) high severeScalar add              time:   [63.678 ns 64.160 ns 64.790 ns]
Found 18 outliers among 100 measurements (18.00%)18 (18.00%) high severeScalar sub              time:   [63.023 ns 63.360 ns 63.790 ns]
Found 17 outliers among 100 measurements (17.00%)1 (1.00%) high mild16 (16.00%) high severefield inversion         time:   [3.6348 us 3.6528 us 3.6763 us]change: [-9.9310% +2.1958% +16.053%] (p = 0.74 > 0.05)No change in performance detected.
Found 17 outliers among 100 measurements (17.00%)17 (17.00%) high severefield multiplication    time:   [27.161 ns 27.300 ns 27.479 ns]change: [-11.422% +1.2224% +15.799%] (p = 0.86 > 0.05)No change in performance detected.
Found 19 outliers among 100 measurements (19.00%)2 (2.00%) high mild17 (17.00%) high severefield sub               time:   [11.746 ns 11.810 ns 11.889 ns]
Found 17 outliers among 100 measurements (17.00%)17 (17.00%) high severefield add               time:   [11.541 ns 11.729 ns 11.965 ns]
Found 22 outliers among 100 measurements (22.00%)1 (1.00%) high mild21 (21.00%) high severe

curve25519-dalek中field域内和scalar域内的运算性能对比相关推荐

  1. property field java_Java 中 field 和 variable 区别及相关术语解释

    原标题:Java 中 field 和 variable 区别及相关术语解释 先说一下 field 和 variable 之间的区别: class variables and instance vari ...

  2. Solr中Field常用属性

    FieldType 实例:<fieldType name="text_ik" class="solr.TextField"></fieldTy ...

  3. js中几种实用的跨域方法原理详解

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...

  4. 内网渗透-域内有网和无网

    文章目录 前言 域内主机有网 攻击流程 域内主机无网 操作流程 前言 在渗透测试的过程中,拿下域内一台主机以后,有时候内网的其他主机有网,有时候没网,此时,如果有网我们就按常规的渗透测试即可,如果没网 ...

  5. 内网渗透-域渗透简单思路

    文章目录 1.权限提升 2.渗透姿势 爆hash,爆aes key 爆hash 爆aes key 3.远程登录 注册表修改 连接命令 4.连接操作 PTH攻击(利用明文或hash连接) IPC(明文连 ...

  6. 内网渗透-域内信息收集

    文章目录 域内基础信息收集 查询域 查询域内所有计算机 查询所有域成员计算机列表 获取域信任 查询域控器 查域控器的主机名 查询域控组 获取域内用户和管理员信息 查询所有域用户列表 向控制器进行查询 ...

  7. sqlserver2000给账户授予所有的权限_内网渗透 | 域内权限解读

    域内权限解读 目录 域本地组 全局组 通用组 A-G-DL-P策略 内置组 几个比较重要的域本地组 几个比较重要的全局组.通用组的权限 域本地组 多域用户访问单域资源(访问同一个域) 可以从任何域添加 ...

  8. 企业级内网的域控环境搭建教程

    所谓域控就是一台或多台域控制器能够控制域内的其他服务器,可实现统一更换电脑桌面,统一修改密码等诸多操作,就像网吧里的网络结构一样,只不过更复杂,更庞大,下面是详细部署教程 说明:要做这个实验需要模拟内 ...

  9. 内网安全-域横向PTHPTKPTT哈希票据传递

    PTH(pass the hash) #利用 lm 或 ntlm 的值进行的渗透测试 PTT(pass the ticket) #利用的票据凭证 TGT 进行的渗透测试 PTK(pass the ke ...

最新文章

  1. 服务发现与健康监测框架Consul-DNS转发的应用
  2. 360浏览器鼠标手势怎么关 取消360浏览器鼠标手势的方法
  3. ios 上传图片失败 小程序_微信小程序ios端 使用ajaxSubmit上传图片失败,android没问题...
  4. 一个简洁的个人导航页面源码
  5. Bean的拷贝之BeanUtils
  6. echart关系树状图_Echarts关系图-力引导布局
  7. 基于JAVA+Spring+MYSQL的码头船只出行管理系统
  8. 达梦数据库操作记录_【干货分享】达梦7与ArcGIS10.4进行安装适配详细步聚说明...
  9. asp.net MVC学习的一些总结
  10. signature=29f9d891eda46899a29591e507a569b3,NEW MARKER OF BREAST TUMORS FROM THE LUMINAL-B SYBTYPE
  11. temp不停生成临时文件 win10_Win10系统安装软件提示不能创建临时文件安装中止如何解决...
  12. 高德地图热力图,高德自带热力图heatmap
  13. 随机生成姓名代码java
  14. 新加坡国立大学计算机系访学,【访学归来】白卫岗:在新加坡国立大学探讨线性水声网络容量...
  15. android wifi智能硬件4g,智能硬件 篇五:把WiFi带在身上,告别宽带!华为随行WiFi2畅享版真实体验...
  16. 最新30个漂亮的个人作品集网页设计案例
  17. 企业微信加密消息体_无代码开发能保障企业系统数据的安全吗?这篇文章为你全面解析!...
  18. idea中git版本回退
  19. 基于Python(Django)+MySQL 实现(Web)SQL智能检测系统的设计与实现【100010694】
  20. 计算机信息技术培训互评 评语,互评评语大全

热门文章

  1. 员工绩效评估的目的是什么?
  2. mkdir: 无法创建目录: 没有那个文件或目录
  3. 暑假游玩五岳之中的泰山
  4. 浅谈ISP-噪声模型1
  5. 高精度算r的n次方 问题 H: 乾隆巡江南
  6. Session的作用及原理
  7. JIRA缺陷管理工具
  8. Archery通过OpenResty代理转发后登录一直提示Forbidden
  9. openpnp - configure - 矫正里程碑
  10. 计算机快速待机,待机快捷键和快速待机的方法步骤