evmone
evmone copied to clipboard
Code chunk access cost PoC
This does not follow any specific specification. The change is to access how much such calculation degrades performance.
Code access in CODECOPY and EXTCODECOPY is ignored.
There is also no initial access list support.
See also geth PoC: https://github.com/ethereum/go-ethereum/pull/22886.
On the main benchmark set, enabling code chunk access cost degrades performance by 5-22% for 32-byte chunks. Using 31-byte chunks is up to 11% slower than 32-byte chunks, 5-28% in total.
Comparing o/master to o/chunk32
Benchmark Time CPU Time Old Time New CPU Old CPU New
-----------------------------------------------------------------------------------------------------------------------------------------------------
baseline/execute/main/blake2b_huff/8415nulls_mean +0.1538 +0.1538 841 970 841 970
baseline/execute/main/blake2b_huff/65536nulls_mean +0.1793 +0.1793 6383 7527 6383 7527
baseline/execute/main/blake2b_shifts/2805nulls_mean +0.1217 +0.1217 2927 3283 2927 3283
baseline/execute/main/blake2b_shifts/5610nulls_mean +0.1234 +0.1234 5937 6670 5937 6670
baseline/execute/main/blake2b_shifts/8415nulls_mean +0.1255 +0.1255 8905 10022 8905 10022
baseline/execute/main/blake2b_shifts/65536nulls_mean +0.1231 +0.1231 69767 78356 69763 78352
baseline/execute/main/sha1_divs/empty_mean +0.1376 +0.1377 48 55 48 55
baseline/execute/main/sha1_divs/1351_mean +0.1252 +0.1252 992 1117 992 1117
baseline/execute/main/sha1_divs/2737_mean +0.1250 +0.1250 1936 2179 1936 2178
baseline/execute/main/sha1_divs/5311_mean +0.1241 +0.1241 3784 4253 3783 4253
baseline/execute/main/sha1_divs/65536_mean +0.1275 +0.1275 46083 51959 46082 51958
baseline/execute/main/sha1_shifts/empty_mean +0.2293 +0.2293 29 35 29 35
baseline/execute/main/sha1_shifts/1351_mean +0.2048 +0.2048 597 719 597 719
baseline/execute/main/sha1_shifts/2737_mean +0.2049 +0.2049 1166 1404 1166 1404
baseline/execute/main/sha1_shifts/5311_mean +0.2073 +0.2073 2284 2757 2284 2757
baseline/execute/main/sha1_shifts/65536_mean +0.2262 +0.2262 27831 34127 27830 34126
baseline/execute/main/weierstrudel/0_mean +0.0507 +0.0507 143 150 143 150
baseline/execute/main/weierstrudel/1_mean +0.0591 +0.0591 316 334 316 334
baseline/execute/main/weierstrudel/3_mean +0.0632 +0.0632 487 518 487 518
baseline/execute/main/weierstrudel/9_mean +0.0648 +0.0648 1000 1065 1000 1065
baseline/execute/main/weierstrudel/14_mean +0.0663 +0.0664 1429 1523 1429 1523
Comparing o/chunk32 to o/chunk31
Benchmark Time CPU Time Old Time New CPU Old CPU New
-----------------------------------------------------------------------------------------------------------------------------------------------------
baseline/execute/main/blake2b_huff/8415nulls_mean +0.1150 +0.1150 970 1081 970 1081
baseline/execute/main/blake2b_huff/65536nulls_mean +0.0893 +0.0893 7527 8199 7527 8199
baseline/execute/main/blake2b_shifts/2805nulls_mean +0.0637 +0.0637 3283 3493 3283 3493
baseline/execute/main/blake2b_shifts/5610nulls_mean +0.0662 +0.0663 6670 7112 6670 7112
baseline/execute/main/blake2b_shifts/8415nulls_mean +0.0609 +0.0609 10022 10633 10022 10633
baseline/execute/main/blake2b_shifts/65536nulls_mean +0.0515 +0.0515 78356 82391 78352 82389
baseline/execute/main/sha1_divs/empty_mean +0.0426 +0.0426 55 57 55 57
baseline/execute/main/sha1_divs/1351_mean +0.0578 +0.0578 1117 1181 1117 1181
baseline/execute/main/sha1_divs/2737_mean +0.0581 +0.0581 2179 2305 2178 2305
baseline/execute/main/sha1_divs/5311_mean +0.0582 +0.0582 4253 4500 4253 4500
baseline/execute/main/sha1_divs/65536_mean +0.0559 +0.0559 51959 54865 51958 54863
baseline/execute/main/sha1_shifts/empty_mean +0.0367 +0.0367 35 36 35 36
baseline/execute/main/sha1_shifts/1351_mean +0.0629 +0.0629 719 764 719 764
baseline/execute/main/sha1_shifts/2737_mean +0.0619 +0.0619 1404 1491 1404 1491
baseline/execute/main/sha1_shifts/5311_mean +0.0559 +0.0560 2757 2911 2757 2911
baseline/execute/main/sha1_shifts/65536_mean +0.0398 +0.0398 34127 35486 34126 35485
baseline/execute/main/weierstrudel/0_mean -0.0038 -0.0038 150 149 150 149
baseline/execute/main/weierstrudel/1_mean +0.0009 +0.0009 334 334 334 334
baseline/execute/main/weierstrudel/3_mean +0.0026 +0.0026 518 520 518 520
baseline/execute/main/weierstrudel/9_mean +0.0059 +0.0059 1065 1071 1065 1071
baseline/execute/main/weierstrudel/14_mean +0.0033 +0.0033 1523 1528 1523 1528