惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
云风的 BLOG
云风的 BLOG
G
Google Developers Blog
S
SegmentFault 最新的问题
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
美团技术团队
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
DataBreaches.Net
F
Fortinet All Blogs
TaoSecurity Blog
TaoSecurity Blog
D
Docker
C
Cybersecurity and Infrastructure Security Agency CISA
K
Kaspersky official blog
宝玉的分享
宝玉的分享
腾讯CDC
Google Online Security Blog
Google Online Security Blog
Recorded Future
Recorded Future
T
The Exploit Database - CXSecurity.com
T
The Blog of Author Tim Ferriss
V
V2EX
S
Securelist
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
C
CERT Recently Published Vulnerability Notes
A
Arctic Wolf
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
Y
Y Combinator Blog
P
Proofpoint News Feed
T
Tor Project blog
AWS News Blog
AWS News Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
博客园 - 聂微东
T
Threat Research - Cisco Blogs
B
Blog
Attack and Defense Labs
Attack and Defense Labs
L
Lohrmann on Cybersecurity
C
CXSECURITY Database RSS Feed - CXSecurity.com
阮一峰的网络日志
阮一峰的网络日志
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
N
News and Events Feed by Topic
博客园 - 司徒正美
H
Help Net Security
C
Cisco Blogs
C
Check Point Blog
S
Secure Thoughts

博客园 - Loning

aelf帮助C#工程师10分钟零门槛搭建DAPP&私有链开发环境 手机跨平台方案介绍 pInvokeStackImbalance MDA 异常解决方法 天津大学免费上网,IPV4及IPV6同时共享的解决方案 纪念那个死去的ASP.NET CMS系统,附死了的源码 基于事件通信的轻量级MVP框架实现,附源码 Git初始化的相关问题 解决mysql表已满的错误 Publish 提示与目标版本不同 C++关闭在debug模式下的“Microsoft Visual C++ Debug Library”对话框 Qt 中Enum进行反射来做Enum to QString 我的OO实践---由GPS消息处理抽象出一通用命令处理类 敏捷开发读书笔记 谈谈我处理异常的一般方法 微软学生技术俱乐部夏令营的一些感受 N95当手柄玩游戏,甩起来还可以用手势控制电脑,分享一下我们的设计经验 这个回答真逗- - 收到开Windows 7 party的资源了【无图无真相】 初探MS SQL CE+Codesmith
性能对比:aelf智能合约运行环境性能是evm的1000倍
Loning · 2019-05-12 · via 博客园 - Loning

2019-05-12 13:20  Loning  阅读(851)  评论()    收藏  举报

  1. 测试用例及代码库
  2. 机器配置
  3. 测试结果
    3.1 EVM
    3.2 AElf
    3.2.1 LoopDivAdd10M
    3.2.2 LoopExpNop1M
  4. 测试结论

近期对标以太坊做了一系列针对测试,在此次测试过程中,我们发现在同一机型上,运行同样的测试用例,aelf的合约执行效率远高于以太坊EVM的合约执行效率。

以太坊的合约执行效率低,一方面因为虚拟机机制和gas费规则带来的一定开销导致效率降低,另一方面因为EVM的256位设计导致合约执行效率更低。

而aelf使用C#的发射机制来调用合约,并且没有多余设计,合约执行效率自然远高于以太坊的合约执行效率

1.测试用例及代码库

以下是对标以太坊 loop-DivAdd-10M.json 和 loop-exp-nop-1M.json的测试情况

ETH: 基于官网go实现版本
https://github.com/ethereum/go-ethereum 
AELF: 基于官方C#实现版本
https://github.com/AElfProject/AElf

测试用例,对标ETH的标准测试:
https://github.com/ethereum/tests/tree/develop/src/VMTestsFiller
对应aelf测试用例:
https://github.com/AElfProject/AElf/blob/dev/bench/AElf.Benchmark

2.机器配置

Test Enviornment:
OS=ubuntu 16.04
QEMU Virtual CPU, 2 CPU, 2 logical and 2 physical cores
CPU MHz: 2194.916; cache size : 16384 KB

AElf Test Environment:

BenchmarkDotNet=v0.11.5
.NET Core SDK=2.2.203
[Host] : .NET Core 2.2.4 (CoreCLR 4.6.27521.02, CoreFX 4.6.27521.01), 64bit RyuJIT DEBUG

3.测试结果

LoopDivAdd10M:EVM耗时为aelf的169倍,差两个数量级
LoopExpNop1M:EVM耗时为aelf的1223倍,差三个数量级

3.1 EVM

官方go实现版本的自带测试程序执行结果

LoopDivAdd10M:14.236813572s
LoopExpNop1M: 639.16568ms

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20190426194013416.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h6ejc4MA==,size_16,color_FFFFFF,t_70)

3.2 AElf

LoopDivAdd10M:84.01ms
LoopExpNop1M: 522.5us

3.2.1 LoopDivAdd10M

除法加法循环一千万次

方法

public override DoubleValue LoopDivAdd(DivAddTestInput input)
{
    var r = input.X;
    for (uint i = 0; i < input.N; i++) 
    {
        r /= input.Y;
        r += input.K;
    }
    return new DoubleValue {Value = r};
}

输入

new DivAddTestInput()
{
    X = 100,
    Y = 300,
    K = 500,
    N = 10000000
}

执行结果:
![执行结果]( https://img-blog.csdnimg.cn/20190426193222110.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h6ejc4MA==,size_16,color_FFFFFF,t_70)

3.2.2 LoopExpNop1M

方法

public override Int32Value LoopExpNop(PerformanceTesteInput input)
{
    for (uint i = 0; i < input.N; i++)
    {
    }
    return new Int32Value {Value = input.Seed};
}

输入

new PerformanceTesteInput()
{
    Exponent = 0,
    Seed = _executeResult,
    N = 1000000
}

执行结果:
![执行结果]( https://img-blog.csdnimg.cn/20190426193648981.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h6ejc4MA==,size_16,color_FFFFFF,t_70)

4.测试结论

在试验机配置相同的情况下:

循环运行1000万次加法、除法测试后:

以太坊EVM约需要14236.81毫秒

而在aelf的节点测试中仅需84.01毫秒,高于EVM 169倍。

空循环运行100万次后:

以太坊EVM需要639.16毫秒

而在aelf的节点测试中仅需0.5225毫秒,高于EVM 1223倍。