性能對比:aelf智能合約運行環境性能是evm的1000倍

  1. 測試用例及代碼庫
  2. 機器配置
  3. 測試結果
    3.1 EVM
    3.2 AElf
    3.2.1 LoopDivAdd10M
    3.2.2 LoopExpNop1M
  4. 測試結論

近期對標以太坊作了一系列針對測試,在這次測試過程當中,咱們發如今同一機型上,運行一樣的測試用例,aelf的合約執行效率遠高於以太坊EVM的合約執行效率。git

以太坊的合約執行效率低,一方面由於虛擬機機制和gas費規則帶來的必定開銷致使效率下降,另外一方面由於EVM的256位設計致使合約執行效率更低。github

而aelf使用C#的發射機制來調用合約,而且沒有多餘設計,合約執行效率天然遠高於以太坊的合約執行效率json

1.測試用例及代碼庫

如下是對標以太坊 loop-DivAdd-10M.json 和 loop-exp-nop-1M.json的測試狀況ubuntu

ETH: 基於官網go實現版本
https://github.com/ethereum/go-ethereum 
AELF: 基於官方C#實現版本
https://github.com/AElfProject/AElfc#

測試用例,對標ETH的標準測試:
https://github.com/ethereum/tests/tree/develop/src/VMTestsFiller
對應aelf測試用例:
https://github.com/AElfProject/AElf/blob/dev/bench/AElf.Benchmarkide

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倍,差三個數量級oop

3.1 EVM

官方go實現版本的自帶測試程序執行結果測試

LoopDivAdd10M:14.236813572s
LoopExpNop1M: 639.16568msui

在這裏插入圖片描述

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
}

執行結果:
執行結果

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
}

執行結果:
執行結果

4.測試結論

在試驗機配置相同的狀況下:

循環運行1000萬次加法、除法測試後:

以太坊EVM約須要14236.81毫秒

而在aelf的節點測試中僅需84.01毫秒,高於EVM 169倍。

空循環運行100萬次後:

以太坊EVM須要639.16毫秒

而在aelf的節點測試中僅需0.5225毫秒,高於EVM 1223倍。

相關文章
相關標籤/搜索