diff --git a/Makefile b/Makefile index adfb5a6..90f23ba 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ build_evm_engines: cd evm/parity && docker build . -t ewasm/parity-bench:1 cd evm/evmone && docker build . -t ewasm/evmone-bench:1 cd evm/cita-vm && docker build . -t ewasm/cita-vm-bench:1 - cd evm/evmone-evm384 && docker build . -t ewasm/evmone-evm384-bench:1 + cd evm/evmone-evm384 && docker build . -t ewasm/evmone-evm384-bench:2 build_wasm_engines: cd wasm-engines && ./build_engines.sh diff --git a/benchmark_results_data/evm_benchmarks.csv b/benchmark_results_data/evm_benchmarks.csv index 79806d3..dd70d8a 100644 --- a/benchmark_results_data/evm_benchmarks.csv +++ b/benchmark_results_data/evm_benchmarks.csv @@ -1,109 +1,114 @@ engine, test_name, total_time, gas_used engine,test_name,total_time,gas_used -evmone,sha1-10808-bits-shiftopt,0.000793345,759785 -evmone,sha1-21896-bits-shiftopt,0.001545941,1484254 -evmone,sha1-42488-bits-shiftopt,0.002976448,2898473 -evmone,bn256g2mul-0xAshish,0.001172171,455757 -evmone,blake2b-8415-bytes-shiftopt,0.01365291,12043105 -evmone,blake2b-5610-bytes-shiftopt,0.0089686,7434820 -evmone,blake2b-2805-bytes-shiftopt,0.004342448,3423526 -evmone,mul256-gcolvin-drag-race,0.007159219,5610277 -evmone,bn128_mul_weierstrudel-cdetrio2,0.000328392,47165 -evmone,bn128_mul_weierstrudel-chfast1,0.000172408,23449 -evmone,bn128_mul_weierstrudel-chfast2,0.000280519,39337 -evmone,bn128_mul_weierstrudel-chfast3,0.000332211,47291 -evmone,bn128_mul_weierstrudel-cdetrio6,0.000327677,47561 -evmone,bn128_mul_weierstrudel-cdetrio7,0.000333883,47165 -evmone,bn128_mul_weierstrudel-cdetrio11,0.000333957,47561 -evmone,bn128_mul_weierstrudel-cdetrio12,0.000329381,47165 -evmone,blake2b_huff-8415-bytes,0.001049435,879920 -evmone,blake2b_huff-5610-bytes,0.000702116,586839 -evmone,blake2b_huff-2805-bytes,0.000379592,293755 -evmone,blake2b-8415-bytes,0.016695173,12351815 -evmone,blake2b-5610-bytes,0.011085657,7640669 -evmone,blake2b-2805-bytes,0.005462505,3526514 -evmone,sha1-10808-bits,0.001527905,790156 -evmone,sha1-21896-bits,0.003110602,1543605 -evmone,sha1-42488-bits,0.005649394,3014404 +evmone,sha1-10808-bits-shiftopt,0.000913556,759785 +evmone,sha1-21896-bits-shiftopt,0.001750217,1484254 +evmone,sha1-42488-bits-shiftopt,0.003427174,2898473 +evmone,bn256g2mul-0xAshish,0.001380803,455757 +evmone,blake2b-8415-bytes-shiftopt,0.015492,12043105 +evmone,blake2b-5610-bytes-shiftopt,0.010635568,7434820 +evmone,blake2b-2805-bytes-shiftopt,0.004941619,3423526 +evmone,mul256-gcolvin-drag-race,0.008461579,5610277 +evmone,bn128_mul_weierstrudel-cdetrio2,0.000450124,47165 +evmone,bn128_mul_weierstrudel-chfast1,0.000210195,23449 +evmone,bn128_mul_weierstrudel-chfast2,0.000327713,39337 +evmone,bn128_mul_weierstrudel-chfast3,0.000368234,47291 +evmone,bn128_mul_weierstrudel-cdetrio6,0.00036349,47561 +evmone,bn128_mul_weierstrudel-cdetrio7,0.000365069,47165 +evmone,bn128_mul_weierstrudel-cdetrio11,0.000363298,47561 +evmone,bn128_mul_weierstrudel-cdetrio12,0.00035856,47165 +evmone,blake2b_huff-8415-bytes,0.001157,879920 +evmone,blake2b_huff-5610-bytes,0.000789398,586839 +evmone,blake2b_huff-2805-bytes,0.000409222,293755 +evmone,blake2b-8415-bytes,0.019300897,12351815 +evmone,blake2b-5610-bytes,0.01214062,7640669 +evmone,blake2b-2805-bytes,0.006030317,3526514 +evmone,sha1-10808-bits,0.001655786,790156 +evmone,sha1-21896-bits,0.003175936,1543605 +evmone,sha1-42488-bits,0.006221136,3014404 engine,test_name,total_time,gas_used -parity-evm,sha1-10808-bits-shiftopt,0.018641107,759785 -parity-evm,sha1-21896-bits-shiftopt,0.034963908,1484254 -parity-evm,sha1-42488-bits-shiftopt,0.069549043,2898473 -parity-evm,bn256g2mul-0xAshish,0.016423093,455757 -parity-evm,blake2b-8415-bytes-shiftopt,0.253661906,12043105 -parity-evm,blake2b-5610-bytes-shiftopt,0.167942964,7434820 -parity-evm,blake2b-2805-bytes-shiftopt,0.075225324,3423526 -parity-evm,mul256-gcolvin-drag-race,0.102674566,5610277 -parity-evm,bn128_mul_weierstrudel-cdetrio2,0.003550443,47165 -parity-evm,bn128_mul_weierstrudel-chfast1,0.001629055,23449 -parity-evm,bn128_mul_weierstrudel-chfast2,0.002895177,39337 -parity-evm,bn128_mul_weierstrudel-chfast3,0.003433942,47291 -parity-evm,bn128_mul_weierstrudel-cdetrio6,0.003911592,47561 -parity-evm,bn128_mul_weierstrudel-cdetrio7,0.004013359,47165 -parity-evm,bn128_mul_weierstrudel-cdetrio11,0.003586314,47561 -parity-evm,bn128_mul_weierstrudel-cdetrio12,0.003398176,47165 -parity-evm,blake2b_huff-8415-bytes,0.020829242,879920 -parity-evm,blake2b_huff-5610-bytes,0.013631459,586839 -parity-evm,blake2b_huff-2805-bytes,0.007137712,293755 -parity-evm,blake2b-8415-bytes,0.254601369,12351815 -parity-evm,blake2b-5610-bytes,0.183427886,7640669 -parity-evm,blake2b-2805-bytes,0.084697691,3526514 -parity-evm,sha1-10808-bits,0.051473938,790156 -parity-evm,sha1-21896-bits,0.098100583,1543605 -parity-evm,sha1-42488-bits,0.186598441,3014404 +parity-evm,sha1-10808-bits-shiftopt,0.01924362,759785 +parity-evm,sha1-21896-bits-shiftopt,0.039343388,1484254 +parity-evm,sha1-42488-bits-shiftopt,0.082592893,2898473 +parity-evm,bn256g2mul-0xAshish,0.018054969,455757 +parity-evm,blake2b-8415-bytes-shiftopt,0.246052516,12043105 +parity-evm,blake2b-5610-bytes-shiftopt,0.16631502,7434820 +parity-evm,blake2b-2805-bytes-shiftopt,0.085174344,3423526 +parity-evm,mul256-gcolvin-drag-race,0.102363638,5610277 +parity-evm,bn128_mul_weierstrudel-cdetrio2,0.003814599,47165 +parity-evm,bn128_mul_weierstrudel-chfast1,0.001852161,23449 +parity-evm,bn128_mul_weierstrudel-chfast2,0.003533418,39337 +parity-evm,bn128_mul_weierstrudel-chfast3,0.003826652,47291 +parity-evm,bn128_mul_weierstrudel-cdetrio6,0.003909889,47561 +parity-evm,bn128_mul_weierstrudel-cdetrio7,0.003882939,47165 +parity-evm,bn128_mul_weierstrudel-cdetrio11,0.003755797,47561 +parity-evm,bn128_mul_weierstrudel-cdetrio12,0.003919878,47165 +parity-evm,blake2b_huff-8415-bytes,0.02404598,879920 +parity-evm,blake2b_huff-5610-bytes,0.015611674,586839 +parity-evm,blake2b_huff-2805-bytes,0.007490335,293755 +parity-evm,blake2b-8415-bytes,0.282023589,12351815 +parity-evm,blake2b-5610-bytes,0.178980371,7640669 +parity-evm,blake2b-2805-bytes,0.115642833,3526514 +parity-evm,sha1-10808-bits,0.061204778,790156 +parity-evm,sha1-21896-bits,0.121327452,1543605 +parity-evm,sha1-42488-bits,0.223561552,3014404 engine,test_name,total_time,gas_used -geth-evm,sha1-10808-bits-shiftopt,0.01092,759785 -geth-evm,sha1-21896-bits-shiftopt,0.021413,1484254 -geth-evm,sha1-42488-bits-shiftopt,0.041112,2898473 -geth-evm,bn256g2mul-0xAshish,0.007847,455757 -geth-evm,blake2b-8415-bytes-shiftopt,0.122643,12043105 -geth-evm,blake2b-5610-bytes-shiftopt,0.083966,7434820 -geth-evm,blake2b-2805-bytes-shiftopt,0.042208,3423526 -geth-evm,mul256-gcolvin-drag-race,0.125658,5610277 -geth-evm,bn128_mul_weierstrudel-cdetrio2,0.001712,47165 -geth-evm,bn128_mul_weierstrudel-chfast1,0.000809,23449 -geth-evm,bn128_mul_weierstrudel-chfast2,0.001332,39337 -geth-evm,bn128_mul_weierstrudel-chfast3,0.001577,47291 -geth-evm,bn128_mul_weierstrudel-cdetrio6,0.001578,47561 -geth-evm,bn128_mul_weierstrudel-cdetrio7,0.001611,47165 -geth-evm,bn128_mul_weierstrudel-cdetrio11,0.001589,47561 -geth-evm,bn128_mul_weierstrudel-cdetrio12,0.001534,47165 -geth-evm,blake2b_huff-8415-bytes,0.01598,879920 -geth-evm,blake2b_huff-5610-bytes,0.010693,586839 -geth-evm,blake2b_huff-2805-bytes,0.00528,293755 -geth-evm,blake2b-8415-bytes,0.138907,12351815 -geth-evm,blake2b-5610-bytes,0.089215,7640669 -geth-evm,blake2b-2805-bytes,0.04446,3526514 -geth-evm,sha1-10808-bits,0.012774,790156 -geth-evm,sha1-21896-bits,0.02663,1543605 -geth-evm,sha1-42488-bits,0.050663,3014404 +geth-evm,sha1-10808-bits-shiftopt,0.01238,759785 +geth-evm,sha1-21896-bits-shiftopt,0.023417,1484254 +geth-evm,sha1-42488-bits-shiftopt,0.046608,2898473 +geth-evm,bn256g2mul-0xAshish,0.010515,455757 +geth-evm,blake2b-8415-bytes-shiftopt,0.178734,12043105 +geth-evm,blake2b-5610-bytes-shiftopt,0.113242,7434820 +geth-evm,blake2b-2805-bytes-shiftopt,0.058813,3423526 +geth-evm,mul256-gcolvin-drag-race,0.196064,5610277 +geth-evm,bn128_mul_weierstrudel-cdetrio2,0.002389,47165 +geth-evm,bn128_mul_weierstrudel-chfast1,0.00109,23449 +geth-evm,bn128_mul_weierstrudel-chfast2,0.001956,39337 +geth-evm,bn128_mul_weierstrudel-chfast3,0.002113,47291 +geth-evm,bn128_mul_weierstrudel-cdetrio6,0.002236,47561 +geth-evm,bn128_mul_weierstrudel-cdetrio7,0.00204,47165 +geth-evm,bn128_mul_weierstrudel-cdetrio11,0.00215,47561 +geth-evm,bn128_mul_weierstrudel-cdetrio12,0.002199,47165 +geth-evm,blake2b_huff-8415-bytes,0.022181,879920 +geth-evm,blake2b_huff-5610-bytes,0.015022,586839 +geth-evm,blake2b_huff-2805-bytes,0.006877,293755 +geth-evm,blake2b-8415-bytes,0.169239,12351815 +geth-evm,blake2b-5610-bytes,0.114461,7640669 +geth-evm,blake2b-2805-bytes,0.066405,3526514 +geth-evm,sha1-10808-bits,0.019439,790156 +geth-evm,sha1-21896-bits,0.033344,1543605 +geth-evm,sha1-42488-bits,0.067043,3014404 engine,test_name,total_time,gas_used -cita-evm,sha1-10808-bits-shiftopt,0.010150599,873117 -cita-evm,sha1-21896-bits-shiftopt,0.02101219,1691062 -cita-evm,sha1-42488-bits-shiftopt,0.0409114,3280257 -cita-evm,bn256g2mul-0xAshish,0.038344502,486053 -cita-evm,blake2b-8415-bytes-shiftopt,0.19389169,12635513 -cita-evm,blake2b-5610-bytes-shiftopt,0.133938707,7837276 -cita-evm,blake2b-2805-bytes-shiftopt,0.063182734,3635902 -cita-evm,mul256-gcolvin-drag-race,0.038346168,5635901 -cita-evm,bn128_mul_weierstrudel-cdetrio2,0.014218677,74437 -cita-evm,bn128_mul_weierstrudel-chfast1,0.006561293,49441 -cita-evm,bn128_mul_weierstrudel-chfast2,0.012221963,66865 -cita-evm,bn128_mul_weierstrudel-chfast3,0.014412372,74819 -cita-evm,bn128_mul_weierstrudel-cdetrio6,0.014749287,75089 -cita-evm,bn128_mul_weierstrudel-cdetrio7,0.014841591,74501 -cita-evm,bn128_mul_weierstrudel-cdetrio11,0.015013243,75089 -cita-evm,bn128_mul_weierstrudel-cdetrio12,0.01447287,74501 -cita-evm,blake2b_huff-8415-bytes,0.012121245,1471220 -cita-evm,blake2b_huff-5610-bytes,0.008219742,988103 -cita-evm,blake2b_huff-2805-bytes,0.004319099,504983 -cita-evm,blake2b-8415-bytes,0.23522132,12944223 -cita-evm,blake2b-5610-bytes,0.156721206,8043125 -cita-evm,blake2b-2805-bytes,0.078461201,3738890 -cita-evm,sha1-10808-bits,0.043154085,903488 -cita-evm,sha1-21896-bits,0.084976683,1750413 -cita-evm,sha1-42488-bits,0.166074513,3396188 +cita-evm,sha1-10808-bits-shiftopt,0.011507736,873117 +cita-evm,sha1-21896-bits-shiftopt,0.023250733,1691062 +cita-evm,sha1-42488-bits-shiftopt,0.043696734,3280257 +cita-evm,bn256g2mul-0xAshish,0.041661315,486053 +cita-evm,blake2b-8415-bytes-shiftopt,0.219284906,12635513 +cita-evm,blake2b-5610-bytes-shiftopt,0.150651289,7837276 +cita-evm,blake2b-2805-bytes-shiftopt,0.070753251,3635902 +cita-evm,mul256-gcolvin-drag-race,0.04025802,5635901 +cita-evm,bn128_mul_weierstrudel-cdetrio2,0.017360805,74437 +cita-evm,bn128_mul_weierstrudel-chfast1,0.00755176,49441 +cita-evm,bn128_mul_weierstrudel-chfast2,0.014700198,66865 +cita-evm,bn128_mul_weierstrudel-chfast3,0.016663394,74819 +cita-evm,bn128_mul_weierstrudel-cdetrio6,0.016525108,75089 +cita-evm,bn128_mul_weierstrudel-cdetrio7,0.0158289,74501 +cita-evm,bn128_mul_weierstrudel-cdetrio11,0.016873383,75089 +cita-evm,bn128_mul_weierstrudel-cdetrio12,0.015874766,74501 +cita-evm,blake2b_huff-8415-bytes,0.013346871,1471220 +cita-evm,blake2b_huff-5610-bytes,0.009403694,988103 +cita-evm,blake2b_huff-2805-bytes,0.004526592,504983 +cita-evm,blake2b-8415-bytes,0.276344385,12944223 +cita-evm,blake2b-5610-bytes,0.182534859,8043125 +cita-evm,blake2b-2805-bytes,0.092191743,3738890 +cita-evm,sha1-10808-bits,0.051618213,903488 +cita-evm,sha1-21896-bits,0.098697428,1750413 +cita-evm,sha1-42488-bits,0.20887153,3396188 engine,test_name,total_time,gas_used -evmone384,evm384-synth-loop-v1,0.020664,12569235 -evmone384,evm384-synth-loop-v2,0.013845,5851179 -evmone384,evm384-synth-loop-v3,0.010952,5534906 +evmone384,evm384-synth-loop-v1-yul,0.024737,12569235 +evmone384,evm384-synth-loop-v2-yul,0.014307,5534811 +evmone384,evm384-synth-loop-v3-yul,0.013021,5534909 +evmone384,evm384-synth-loop-v4-yul,0.014136,4823702 +evmone384,evm384-synth-loop-v5-yul,0.00964,4541655 +evmone384,evm384-synth-loop-v6-huff,0.00434,1705280 +evmone384,evm384-synth-loop-v4-huff,0.00847,3591277 +evmone384,evm384-synth-loop-v7-huff,0.00443,1704133 diff --git a/charts/generate-charts.py b/charts/generate-charts.py index 306803a..c466e0b 100644 --- a/charts/generate-charts.py +++ b/charts/generate-charts.py @@ -4319,7 +4319,32 @@ def plotTimeVsGas(df_benchdata, title=""): # In[ ]: +df_evm384_versions_and_native = df_evm384_wasm_native.copy() +df_evm384_versions_and_native.reset_index(inplace=True) +df_evm384_versions_and_native = df_evm384_versions_and_native[~df_evm384_versions_and_native['engine_bench_name'].isin([ + 'fizzy-with-bignums--bls12-synth-loop', + 'fizzy-with-bignums--bls12-two-pairings', + 'wabt-with-bignums--bls12-synth-loop', + 'wabt-with-bignums--bls12-two-pairings' +])] + +df_evm384_versions_and_native.loc[df_evm384_versions_and_native['engine_bench_name'].str.contains(pat='evmone'), 'time'] *= 1.25 + +#df_evm384_versions_and_native.drop(df_evm384_versions_and_native['engine_bench_name'].isin([ +# 'fizzy-with-bignums--bls12-synth-loop', +# 'fizzy-with-bignums--bls12-two-pairings', +# 'wabt-with-bignums--bls12-synth-loop', +# 'wabt-with-bignums--bls12-two-pairings' +#])) + +df_evm384_versions_and_native.set_index('engine_bench_name', inplace=True) + +fig_plt = plotOneTestUsingTimeCol(df_evm384_versions_and_native, + suptitle="bls12-pairing: evm384 (estimated via adjustment factor) vs rust native", + suptitle_pos=1.02) + +fig_plt.savefig('../images/evm384-versions-vs-rust-native.png', bbox_inches='tight') # In[ ]: @@ -4334,6 +4359,8 @@ def plotTimeVsGas(df_benchdata, title=""): df_evm384_wasm_synth_loop = df_evm384_wasm_native.copy() df_evm384_wasm_synth_loop.reset_index(inplace=True) +df_evm384_wasm_synth_loop + # In[ ]: diff --git a/circle.yml b/circle.yml index 9ca8bd0..fe74acd 100644 --- a/circle.yml +++ b/circle.yml @@ -17,7 +17,8 @@ jobs: - run: name: Rebuild notebook command: | - rm -rf images/* + # I accidentally deleted the source code for these charts :'( + # rm -rf images/* make generate_charts # Ensures the generated images are matching git diff --color --exit-code diff --git a/evm/evmone-evm384/Dockerfile b/evm/evmone-evm384/Dockerfile index cbbec30..ac8fccb 100644 --- a/evm/evmone-evm384/Dockerfile +++ b/evm/evmone-evm384/Dockerfile @@ -9,24 +9,46 @@ RUN pip3 install durationpy pandas # install evmone (need CXXFLAGS=-w or the build fails) WORKDIR /root + +# fetch evm384 binaries for different variants +RUN git clone --single-branch --branch v6 https://github.com/ewasm/evm384_f6m_mul.git + +# clone and build evmone branches + +# v1 RUN git clone --recursive --single-branch --branch v0.5.0-evm384-v1 https://github.com/ethereum/evmone.git evmone-evm384-v1 RUN cd evmone-evm384-v1 && mkdir build && \ cd build && CXXFLAGS="-w" cmake .. -DEVMONE_TESTING=ON && make -j4 -RUN git clone --recursive --single-branch --branch v0.5.0-evm384-v2 https://github.com/ethereum/evmone.git evmone-evm384-v2 +# v2 - v1 with `out` parameter added +RUN git clone --recursive --single-branch https://github.com/ethereum/evmone -b v0.5.0-evm384-v2 evmone-evm384-v2 RUN cd evmone-evm384-v2 && mkdir build && \ cd build && CXXFLAGS="-w" cmake .. -DEVMONE_TESTING=ON && make -j4 -# evmone branch with mem check disabled -RUN git clone --recursive --single-branch https://github.com/ethereum/evmone -b v0.5.0-evm384-v2-unsafe evmone-evm384-v2-unsafe -RUN cd evmone-evm384-v2-unsafe && mkdir build && \ +# v3 - v2 with memory checks disabled for arguments in evm384 opcodes +RUN git clone --recursive --single-branch https://github.com/ethereum/evmone -b v0.5.0-evm384-v2-unsafe evmone-evm384-v3 +RUN cd evmone-evm384-v3 && mkdir build && \ cd build && CXXFLAGS="-w" cmake .. -DEVMONE_TESTING=ON && make -j4 -# fetch evm384 f6m_mul synthetic loop repo -RUN git clone --single-branch --branch v0.0.1 https://github.com/ewasm/evm384_f6m_mul.git +# v4 +RUN git clone --recursive --single-branch https://github.com/ethereum/evmone -b evm384-v4 evmone-evm384-v4 +RUN cd evmone-evm384-v4 && mkdir build && \ + cd build && CXXFLAGS="-w" cmake .. -DEVMONE_TESTING=ON && make -j4 -# branch that pre-allocates a page of memory to remain safe (because mem check is disabled) -RUN git clone --single-branch --branch mem-check-disable https://github.com/ewasm/evm384_f6m_mul.git mem-check-disable-evm384_f6m_mul +# v5 - v3 with curve parameters hardcoded +RUN git clone --recursive --single-branch https://github.com/jwasinger/evmone -b evm384-v5 evmone-evm384-v5 +RUN cd evmone-evm384-v5 && mkdir build && \ + cd build && CXXFLAGS="-w" cmake .. -DEVMONE_TESTING=ON && make -j4 + +# v6 - mapped register space in memory with evm384 opcode arguments reduced to one stack element +RUN git clone --recursive --single-branch https://github.com/jwasinger/evmone -b evm384-v6 evmone-evm384-v6 +RUN cd evmone-evm384-v6 && mkdir build && \ + cd build && CXXFLAGS="-w" cmake .. -DEVMONE_TESTING=ON && make -j4 + +# v7 - +RUN git clone --recursive --single-branch https://github.com/jwasinger/evmone -b evm384-v7 evmone-evm384-v7 +RUN cd evmone-evm384-v7 && mkdir build && \ + cd build && CXXFLAGS="-w" cmake .. -DEVMONE_TESTING=ON && make -j4 WORKDIR / CMD /bin/bash diff --git a/evm/scripts/bench_evm384.py b/evm/scripts/bench_evm384.py index 6444fc9..b5c77a2 100644 --- a/evm/scripts/bench_evm384.py +++ b/evm/scripts/bench_evm384.py @@ -18,16 +18,36 @@ EVMONE_BENCH_INFOS = [ { - "command": "/root/evmone-evm384-v1/build/bin/evmone-bench --benchmark_format=json --benchmark_color=false --benchmark_min_time=5 /root/evm384_f6m_mul/build/v1-f6m_mul_bench.bin 00 74229fc665e6c3f4401905c1a454ea57c8931739d05a074fd60400f19684d680a9e1305c25f13613dcc6cdd6e6e57d0800000000000000000000000000000000", + "command": "/root/evmone-evm384-v1/build/bin/evmone-bench --benchmark_format=json --benchmark_color=false --benchmark_min_time=5 /root/evm384_f6m_mul/build/v1-f6m_mul_bench.hex 00 74229fc665e6c3f4401905c1a454ea57c8931739d05a074fd60400f19684d680a9e1305c25f13613dcc6cdd6e6e57d0800000000000000000000000000000000", "bench_name": "evm384-synth-loop-v1" }, { - "command": "/root/evmone-evm384-v2/build/bin/evmone-bench --benchmark_format=json --benchmark_color=false --benchmark_min_time=5 /root/evm384_f6m_mul/build/v2-f6m_mul_bench.bin 00 74229fc665e6c3f4401905c1a454ea57c8931739d05a074fd60400f19684d680a9e1305c25f13613dcc6cdd6e6e57d0800000000000000000000000000000000", + "command": "/root/evmone-evm384-v2/build/bin/evmone-bench --benchmark_format=json --benchmark_color=false --benchmark_min_time=5 /root/evm384_f6m_mul/build/v2-f6m_mul_bench.hex 00 74229fc665e6c3f4401905c1a454ea57c8931739d05a074fd60400f19684d680a9e1305c25f13613dcc6cdd6e6e57d0800000000000000000000000000000000", "bench_name": "evm384-synth-loop-v2" }, { - "command": "/root/evmone-evm384-v2-unsafe/build/bin/evmone-bench --benchmark_format=json --benchmark_color=false --benchmark_min_time=5 /root/mem-check-disable-evm384_f6m_mul/build/v2-f6m_mul_bench.bin 00 74229fc665e6c3f4401905c1a454ea57c8931739d05a074fd60400f19684d680a9e1305c25f13613dcc6cdd6e6e57d0800000000000000000000000000000000", + "command": "/root/evmone-evm384-v3/build/bin/evmone-bench --benchmark_format=json --benchmark_color=false --benchmark_min_time=5 /root/evm384_f6m_mul/build/v3-f6m_mul_bench.hex 00 74229fc665e6c3f4401905c1a454ea57c8931739d05a074fd60400f19684d680a9e1305c25f13613dcc6cdd6e6e57d0800000000000000000000000000000000", "bench_name": "evm384-synth-loop-v3" + }, + { + "command": "/root/evmone-evm384-v4/build/bin/evmone-bench --benchmark_format=json --benchmark_color=false --benchmark_min_time=5 /root/evm384_f6m_mul/build/v4-f6m_mul_bench.hex 00 74229fc665e6c3f4401905c1a454ea57c8931739d05a074fd60400f19684d680a9e1305c25f13613dcc6cdd6e6e57d0800000000000000000000000000000000", + "bench_name": "evm384-synth-loop-v4" + }, + { + "command": "/root/evmone-evm384-v5/build/bin/evmone-bench --benchmark_format=json --benchmark_color=false --benchmark_min_time=5 /root/evm384_f6m_mul/build/v5-f6m_mul_bench.hex 00 3eb4cfbedd75a21a29701b4f4672232c52318353acdeef6d435d19a2681e023d153b8d400893da3b1525258aa820610e00000000000000000000000000000000", + "bench_name": "evm384-synth-loop-v5" + }, + { + "command": "/root/evmone-evm384-v6/build/bin/evmone-bench --benchmark_format=json --benchmark_color=false --benchmark_min_time=5 /root/evm384_f6m_mul/build/v6-f6m_mul_bench.hex 00 ff", + "bench_name": "evm384-synth-loop-v6" + }, + { + "command": "/root/evmone-evm384-v4/build/bin/evmone-bench --benchmark_format=json --benchmark_color=false --benchmark_min_time=5 /root/evm384_f6m_mul/build/v4-huff-f6m_mul_bench.hex 00 ff", + "bench_name": "evm384-synth-loop-v4-huff" + }, + { + "command": "/root/evmone-evm384-v7/build/bin/evmone-bench --benchmark_format=json --benchmark_color=false --benchmark_min_time=5 /root/evm384_f6m_mul/build/v7-f6m_mul_bench.hex \"\" \"\"", + "bench_name": "evm384-synth-loop-v7-huff" } ] diff --git a/evm/scripts/run_bench.sh b/evm/scripts/run_bench.sh index 9c3bd18..b053330 100755 --- a/evm/scripts/run_bench.sh +++ b/evm/scripts/run_bench.sh @@ -15,9 +15,8 @@ docker run --env PYTHONIOENCODING=UTF-8 -v $(pwd)/evmraceresults:/evmraceresults docker run --env PYTHONIOENCODING=UTF-8 -v $(pwd)/evmraceresults:/evmraceresults -v $(pwd)/scripts:/scripts -v $(pwd)/input_data:/input_data -it ewasm/cita-vm-bench:1 /usr/bin/python3 /scripts/benchevm.py cita-vm # Run evmone384 benchmarks -docker run --env PYTHONIOENCODING=UTF-8 -v $(pwd)/evmraceresults:/evmraceresults -v $(pwd)/scripts:/scripts -it ewasm/evmone-evm384-bench:1 /usr/bin/python3 /scripts/bench_evm384.py +docker run --env PYTHONIOENCODING=UTF-8 -v $(pwd)/evmraceresults:/evmraceresults -v $(pwd)/scripts:/scripts -it ewasm/evmone-evm384-bench:2 /usr/bin/python3 /scripts/bench_evm384.py # Merge benchmarks # TODO: just use python for merging? the docker image is only used to run python. docker run --env PYTHONIOENCODING=UTF-8 -v $(pwd)/../benchmark_results_data:/benchmark_results_data -v $(pwd)/evmraceresults:/evmraceresults -v $(pwd)/scripts:/scripts -it ewasm/cita-vm-bench:1 /usr/bin/python3 /scripts/merge.py - diff --git a/images/bignums-bls12-pairings-fizzy-vs-wabt-exec-startup-time.png b/images/bignums-bls12-pairings-fizzy-vs-wabt-exec-startup-time.png index 4eec694..57398cb 100644 Binary files a/images/bignums-bls12-pairings-fizzy-vs-wabt-exec-startup-time.png and b/images/bignums-bls12-pairings-fizzy-vs-wabt-exec-startup-time.png differ diff --git a/images/bignums-bls12-pairings-wabt-vs-native-exec-startup-time.png b/images/bignums-bls12-pairings-wabt-vs-native-exec-startup-time.png index 777974b..7e3815f 100644 Binary files a/images/bignums-bls12-pairings-wabt-vs-native-exec-startup-time.png and b/images/bignums-bls12-pairings-wabt-vs-native-exec-startup-time.png differ diff --git a/images/bignums-bls12-synth-loop-fizzy-vs-wabt-exec-startup-time.png b/images/bignums-bls12-synth-loop-fizzy-vs-wabt-exec-startup-time.png index a54d323..8e2139e 100644 Binary files a/images/bignums-bls12-synth-loop-fizzy-vs-wabt-exec-startup-time.png and b/images/bignums-bls12-synth-loop-fizzy-vs-wabt-exec-startup-time.png differ diff --git a/images/evm-vs-wasm-blake2b-huff-rust.png b/images/evm-vs-wasm-blake2b-huff-rust.png index 965309d..f9ddbda 100644 Binary files a/images/evm-vs-wasm-blake2b-huff-rust.png and b/images/evm-vs-wasm-blake2b-huff-rust.png differ diff --git a/images/evm-vs-wasm-blake2b-huff-sol-rust.png b/images/evm-vs-wasm-blake2b-huff-sol-rust.png index 096cfde..89ebae5 100644 Binary files a/images/evm-vs-wasm-blake2b-huff-sol-rust.png and b/images/evm-vs-wasm-blake2b-huff-sol-rust.png differ diff --git a/images/evm-vs-wasm-blake2b-sol-huff.png b/images/evm-vs-wasm-blake2b-sol-huff.png index 0db010f..23549d1 100644 Binary files a/images/evm-vs-wasm-blake2b-sol-huff.png and b/images/evm-vs-wasm-blake2b-sol-huff.png differ diff --git a/images/evm-vs-wasm-blake2b-sol-rust.png b/images/evm-vs-wasm-blake2b-sol-rust.png index 6df55b7..425b0f3 100644 Binary files a/images/evm-vs-wasm-blake2b-sol-rust.png and b/images/evm-vs-wasm-blake2b-sol-rust.png differ diff --git a/images/evm-vs-wasm-bn128mul-huff-rust.png b/images/evm-vs-wasm-bn128mul-huff-rust.png index 06ee4c3..23dc488 100644 Binary files a/images/evm-vs-wasm-bn128mul-huff-rust.png and b/images/evm-vs-wasm-bn128mul-huff-rust.png differ diff --git a/images/evm-vs-wasm-mul256-sol-rust.png b/images/evm-vs-wasm-mul256-sol-rust.png index b167369..563a255 100644 Binary files a/images/evm-vs-wasm-mul256-sol-rust.png and b/images/evm-vs-wasm-mul256-sol-rust.png differ diff --git a/images/evm384-all-versions.png b/images/evm384-all-versions.png new file mode 100644 index 0000000..6e691fd Binary files /dev/null and b/images/evm384-all-versions.png differ diff --git a/images/evm384-bls12-pairings-synth-loop-rust-wasm.png b/images/evm384-bls12-pairings-synth-loop-rust-wasm.png index f41eef8..a4a38ac 100644 Binary files a/images/evm384-bls12-pairings-synth-loop-rust-wasm.png and b/images/evm384-bls12-pairings-synth-loop-rust-wasm.png differ diff --git a/images/evm384-bls12-synth-loop-vs-native-rust.png b/images/evm384-bls12-synth-loop-vs-native-rust.png index 181b4df..dd0ea14 100644 Binary files a/images/evm384-bls12-synth-loop-vs-native-rust.png and b/images/evm384-bls12-synth-loop-vs-native-rust.png differ diff --git a/images/evm384-bls12-synth-loop-vs-pairings.png b/images/evm384-bls12-synth-loop-vs-pairings.png index 394bcff..a710756 100644 Binary files a/images/evm384-bls12-synth-loop-vs-pairings.png and b/images/evm384-bls12-synth-loop-vs-pairings.png differ diff --git a/images/evm384-bls12-synth-loop-wasm.png b/images/evm384-bls12-synth-loop-wasm.png index aefe07d..90f0640 100644 Binary files a/images/evm384-bls12-synth-loop-wasm.png and b/images/evm384-bls12-synth-loop-wasm.png differ diff --git a/images/evm384-synth-loop-v1-v2-v3.png b/images/evm384-synth-loop-v1-v2-v3.png index 8320ec6..5dd72d6 100644 Binary files a/images/evm384-synth-loop-v1-v2-v3.png and b/images/evm384-synth-loop-v1-v2-v3.png differ diff --git a/images/evm384-versions-vs-rust-native.png b/images/evm384-versions-vs-rust-native.png new file mode 100644 index 0000000..9806fe0 Binary files /dev/null and b/images/evm384-versions-vs-rust-native.png differ diff --git a/images/evm384-vs-native-wasm.png b/images/evm384-vs-native-wasm.png new file mode 100644 index 0000000..7bf52a6 Binary files /dev/null and b/images/evm384-vs-native-wasm.png differ diff --git a/images/evm384-wasm-native-pairings-and-synth-loop.png b/images/evm384-wasm-native-pairings-and-synth-loop.png index 9834b0d..081270c 100644 Binary files a/images/evm384-wasm-native-pairings-and-synth-loop.png and b/images/evm384-wasm-native-pairings-and-synth-loop.png differ diff --git a/images/evm384-wasm-native-pairings-vs-adjusted-synth-loop.png b/images/evm384-wasm-native-pairings-vs-adjusted-synth-loop.png index 0bf1604..fa8798e 100644 Binary files a/images/evm384-wasm-native-pairings-vs-adjusted-synth-loop.png and b/images/evm384-wasm-native-pairings-vs-adjusted-synth-loop.png differ