mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-26 16:36:17 +00:00
612 commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
aec597d7b9
|
core/vm: implements EIP-8037 spec change (#35173)
Implements spec change https://github.com/ethereum/EIPs/pull/11807 This PR resolves the conflict between the EIP-7928 and EIP-8037. Specifically in contract deployment, EIP-7928 requires to not resolve the deployed account until it's accessed, while in EIP-8037, the early access is required to determine if the account-creation should be charged or not. This PR addresses this conflict by changing the EIP-8037 a bit, unconditionally charge the account creation in CREATE Family (CreateTx, Create/Create2 opcode) and refunds the associated gas cost if the account creation doesn't happen ultimately. Checkout https://hackmd.io/@bFEBbZiVSAO0IURh9qzEFg/BJmFYqCeGl for more details What's more, now the LIFO mechanism is used for refilling the state cost in frame revert, frame halt, state opcode refunds. |
||
|
|
b72371887a
|
core/vm: inline the gas deduction (#35203)
This PR inlines the gas deduction by getting rid of the tracer and use `chargeRegularOnly` for the non-state opcode. It fixes a performance regression introduced by EIP-8037 PR. ``` throughput MGas/s | 184.4 (±0.3%) | 193.1 (±1.0%) | +4.7% ▲ -- | -- | -- | -- mean newPayload | 164.2 ms (±0.3%) | 156.9 ms (±1.0%) | -4.5% ▲ p50 newPayload | 154.6 ms (±0.1%) | 147.6 ms (±0.7%) | -4.5% ▲ p95 newPayload | 273.3 ms (±2.3%) | 261.6 ms (±2.4%) | -4.3% ≈ noise p99 newPayload | 403.6 ms (±4.4%) | 380.9 ms (±4.0%) | -5.6% ≈ noise ``` |
||
|
|
6e62cc5aa8
|
core/vm: compute stack operations in place (#35156)
The stack primitives pop by value: pop() returns the 32-byte value
itself, so every popped operand is copied out of the stack arena before
it is used. The result side was already in place, peek returns a pointer
and binary ops write into the new stack top. This PR fixes the operand
side: pointer-returning primitives (popPtr, popPtrPeek, etc), with the
handlers rewritten to read operands directly from their arena slots.
Every popped operand paid the copy, whatever the op went on to do with
it, so this optimization covers the arithmetic and comparison ops as
much as JUMP, MSTORE, SSTORE and RETURN.
The copy is visible in the assembly. On arm64, master's opLt spends four
instructions moving the popped value through the frame, and the
comparison then reads it back from there:
LDP (R5), (R6, R7) ; load words 0 and 1 of the popped value from the
arena
LDP 16(R5), (R5, R8) ; load words 2 and 3
STP (R6, R7), vm.~r0-64(SP) ; store words 0 and 1 into a frame slot
STP (R5, R8), vm.~r0-48(SP) ; store words 2 and 3
With popPtrPeek those four instructions are gone, the frame shrinks from
locals=0x58 to locals=0x18, and the function from 336 to 288 bytes. The
compiler cannot remove the copy itself: uint256.Int is a four-element
array, and Go's SSA does not promote arrays longer than one element to
registers, so a by-value pop pays this round trip no matter how far
inlining gets, for LT exactly as for ADD.
The CALL and CREATE families are deliberately not converted: a child
frame reuses the same stack arena, so parent pointers into popped slots
die when the child pushes. The rule is recorded on the primitives:
pointers stay valid until the next push or any sub call. Converting the
call family safely means materializing scalars before the child call,
left for later work with a call-heavy benchmark to justify it.
### Benchmarks
Measured with the benchmark suite from #35144 (the evm-bench contract
workloads and the block import benchmark), which is not part of this
PR's diff. Apple M4 Max, fixed iteration counts, n=10, all p=0.000. B/op
and allocs/op are statistically identical on every benchmark:
| benchmark | master | PR | vs master |
|---|---|---|---|
| Snailtracer | 60.0 ms | 54.1 ms | -9.8% |
| TenThousandHashes | 13.2 ms | 12.2 ms | -7.8% |
| ERC20Transfer | 11.7 ms | 11.0 ms | -5.5% |
| ERC20Mint | 7.49 ms | 7.02 ms | -6.2% |
| ERC20ApprovalTransfer | 8.92 ms | 8.44 ms | -5.4% |
This PR is independent of #35144 but plays nicely with it: the generated
dispatch there splices these handler bodies, so the in-place forms land
in its fast path too, where they measure larger.
### Testing
The rewritten handlers run on the interpreter's only execution path, so
correctness rests on references outside the change:
- **Consensus fixtures.** The full tests package passes: state tests,
the execution-spec families, blockchain tests.
- **Opcode testcases.** The JSON testcases compare individual opcode
results against committed expected values.
- **Tracer fixtures.** The tracetest reference files pin exact log and
return data shapes, covering the rewritten LOG and RETURN paths.
- **Cross-build differential.** A goevmlab campaign running this
branch's evm against master's evm over generated state tests across four
forks (Prague, Cancun, London, Osaka) with full trace comparison:
160,566 tests, zero divergences.
---------
Co-authored-by: MariusVanDerWijden <m.vanderwijden@live.de>
|
||
|
|
116314baf9
|
core/vm: fix test error message (#35134) | ||
|
|
9059157eba
|
core: implement EIP-8037, state creation gas cost increase (#33601)
Implements https://eips.ethereum.org/EIPS/eip-8037 mainly done in order to judge the complexity of the EIP and to act as a jumping off point, since the eip will likely change. --------- Co-authored-by: Gary Rong <garyrong0905@gmail.com> |
||
|
|
39b17c5585
|
all: fix all typos, as reported by crates-ci/typos (#35008)
This is a PR that removes all correctly flagged typos, in order to stop an onslaught of slop PRs in its tracks. It should be followed by #34994 but the latter needs more configuration work and I want to limit the stem of PRs right now. |
||
|
|
1bdc4a60d9
|
core, consensus, internal, eth, miner: construct block accessList (#34957)
This PR finally lands EIP-7928, collecting the block accessList during the block execution and verifying against the block header. --------- Co-authored-by: jwasinger <j-wasinger@hotmail.com> Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de> |
||
|
|
b2aa6987de
|
core/state: track the block-level accessList (#34803)
This PR extends the journal to track the pre-transaction values of mutated balances, nonces, and code. At the end of the transaction, these values are used to filter out no-op changes, such as balance transitions from a-> b->a. These changes are excluded from the block-level access list. Additionally, there is a dedicated `bal.ConstructionBlockAccessList` objects for gathering the state reads and writes within the current transaction. These state writes will be keyed by the block accessList index. --------- Co-authored-by: jwasinger <j-wasinger@hotmail.com> |
||
|
|
0494cdce23
|
core: introduce GasChangeHook v2 (#34946)
This PR introduces OnGasChangeV2 tracing hook, as the pre-requisite for landing EIP-8037. --------- Co-authored-by: Sina M <1591639+s1na@users.noreply.github.com> |
||
|
|
4dc7d46155
|
core/vm: implement stack arena (#33960)
Here, we change the EVM stack implementation to use an 'arena', i.e. a shared allocation pool for sub-call stacks. The stack is now more GC-friendly, since it is a slice of uint256 values instead of a slice of pointers. Code that pushes an item to the stack has been changed to get() the top item, then overwrite it. The PR is a rewrite/rebase of #30362. --------- Co-authored-by: Martin Holst Swende <martin@swende.se> Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de> |
||
|
|
6f02965aab
|
core: track the state access footprint (#34776)
This is a pre-requisite PR for landing the BAL construction |
||
|
|
29e0a6f404
|
core/vm, eth, tests: introduce gas budget (#34712)
This PR introduces a gasBudget struct to track the available gas for EVM execution. With the upcoming EIP-8037, multi-dimensional gas accounting will be introduced, requiring multiple gas budget counters to be tracked simultaneously. To support this, the counters are grouped into a gasBudget structure. This change is a prerequisite for internal refactoring in preparation for EIP-8037. --------- Co-authored-by: MariusVanDerWijden <m.vanderwijden@live.de> |
||
|
|
ba215fd927
|
cmd, core, trie, triedb: split CachingDB into merkle + binary dbs. (#34700)
This Pr implements some prerequisite changes for #34004 : split the `CachingDB` into a `MerkleDB` and a `UBTDB`, so that very different behaviors don't clash as much. The transition isn't handled by this PR, but after talking to Gary we agreed that `UBTDB` should receive another `triedb`, which will only be loaded if the `Ended` flag is set to false in the conversion contract. If this is too hard to achieve, it makes sense to load it regardless, and then loading can be prevented at a later stage by adding a `UBTTransitionFinalizationTime` in `ChainConfig`. --------- Co-authored-by: Gary Rong <garyrong0905@gmail.com> |
||
|
|
eb67d61933
|
cmd/geth, core/state, tests: rework EIP7610 check (#34718)
This PR simplifies the implementation of EIP-7610 by eliminating the
need to check storage emptiness during contract deployment.
EIP-7610 specifies that contract creation must be rejected if the
destination account has a non-zero nonce, non-empty runtime code, or
**non-empty storage**.
After EIP-161, all newly deployed contracts are initialized with a nonce
of one. As a result, such accounts are no longer eligible as deployment
targets unless they are explicitly cleared.
However, prior to EIP-161, contracts were initialized with a nonce of
zero. This made it possible to end up with accounts that have:
- zero nonce
- empty runtime code
- non-empty storage (created during constructor execution)
- non-zero balance
These edge-case accounts complicate the storage emptiness check.
In practice, contract addresses are derived using one of the following
formulas:
- `Keccak256(rlp({sender, nonce}))[12:]`
- `Keccak256([]byte{0xff}, sender, salt[:], initHash)[12:]`
As such, an existing address is not selected as a deployment target
unless a collision occurs, which is extremely unlikely.
---
Previously, verifying storage emptiness relied on GetStorageRoot.
However, with the transition to the block-based access list (BAL),
the storage root is no longer available, as computing it would require
reconstructing the full storage trie from all mutations of preceding
transactions.
To address this, this PR introduces a simplified approach: it hardcodes
the set of known accounts that have zero nonce, empty runtime code,
but non-empty storage and non-zero balance. During contract deployment,
if the destination address belongs to this set, the deployment is
rejected.
This check is applied retroactively back to genesis. Since no address
collision events have occurred in Ethereum’s history, this change does
not
alter existing behavior. Instead, it serves as a safeguard for future
state
transitions.
|
||
|
|
527ea11e50
|
core/vm/runtime: don't overwrite user input with default value (#33510)
runtime.setDefaults was unconditionally assigning cfg.Random =
&common.Hash{}, which silently overwrote any caller-provided Random
value. This made it impossible to simulate a specific PREVRANDAO and
also forced post-merge rules whenever London was active, regardless of
the intended environment.
This change only initializes cfg.Random when it is nil, matching how
other fields in Config are defaulted. Existing callers that did not set
Random keep the same behavior (a non-nil zero hash still enables
post-merge semantics), while callers that explicitly set Random now get
their value respected.
|
||
|
|
5b7511eeed
|
core/vm: include operand in error message (#34635)
Return ErrInvalidOpCode with the executing opcode and offending immediate for forbidden DUPN, SWAPN, and EXCHANGE operands. Extend TestEIP8024_Execution to assert both opcode and operand for all invalid-immediate paths. |
||
|
|
6333855163
|
core: turn gas into a vector <regularGas, stateGas> (#34691)
Pre-refactor PR to get 8037 upstreamed in chunks --------- Co-authored-by: Gary Rong <garyrong0905@gmail.com> |
||
|
|
21b19362c2
|
core/state: fix tracer hook for EIP-7708 burn logs (#34688)
This PR fixes https://github.com/ethereum/go-ethereum/issues/34623 by changing the `vm.StateDB` interface: Instead of `EmitLogsForBurnAccounts()` emitting burn logs, `LogsForBurnAccounts() []*types.Log` just returns these logs which are then emitted by the caller. This way when tracing is used, `hookedStateDB.AddLog` will be used automatically and there is no need to duplicate either the burn log logic or the `OnLog` tracing hook. |
||
|
|
b87340a856
|
core, core/vm: implement EIP-7708 (#33645)
This PR implements EIP-7708 according to the latest "rough consensus": https://github.com/ethereum/EIPs/pull/9003 https://github.com/etan-status/EIPs/blob/fl-ethlogs/EIPS/eip-7708.md --------- Co-authored-by: Jared Wasinger <j-wasinger@hotmail.com> Co-authored-by: raxhvl <raxhvl@users.noreply.github.com> Co-authored-by: Gary Rong <garyrong0905@gmail.com> |
||
|
|
fd859638bd
|
core/vm: rework gas measurement for call variants (#33648)
EIP-7928 brings state reads into consensus by recording accounts and storage accessed during execution in the block access list. As part of the spec, we need to check that there is enough gas available to cover the cost component which doesn't depend on looking up state. If this component can't be covered by the available gas, we exit immediately. The portion of the call dynamic cost which doesn't depend on state look ups: - EIP2929 call costs - value transfer cost - memory expansion cost This PR: - breaks up the "inner" gas calculation for each call variant into a pair of stateless/stateful cost methods - modifies the gas calculation logic of calls to check stateless cost component first, and go out of gas immediately if it is not covered. --------- Co-authored-by: Gary Rong <garyrong0905@gmail.com> |
||
|
|
95b9a2ed77
|
core: Implement eip-7954 increase Maximum Contract Size (#33832)
Implement EIP7954, This PR raises the maximum contract code size to 32KiB and initcode size to 64KiB , following https://eips.ethereum.org/EIPS/eip-7954 --------- Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de> |
||
|
|
814edc5308
|
core/vm: Switch to branchless normalization and extend EXCHANGE (#33869)
For bal-devnet-3 we need to update the EIP-8024 implementation to the latest spec changes: https://github.com/ethereum/EIPs/pull/11306 > Note: I deleted tests not specified in the EIP bc maintaining them through EIP changes is too error prone. |
||
|
|
6d99759f01
|
cmd, core, eth, tests: prevent state flushing in RPC (#33931)
Fixes https://github.com/ethereum/go-ethereum/issues/33572 |
||
|
|
fe3a74e610
|
core/vm: use amsterdam jump table in lookup (#33947)
Return the Amsterdam instruction set from `LookupInstructionSet` when `IsAmsterdam` is true, so Amsterdam rules no longer fall through to the Osaka jump table. --------- Co-authored-by: rjl493456442 <garyrong0905@gmail.com> |
||
|
|
2726c9ef9e
|
core/vm: enable 8024 instructions in Amsterdam (#33928) | ||
|
|
f811bfe4fd
|
core/vm: implement eip-7843: SLOTNUM (#33589)
Implements the slotnum opcode as specified here: https://eips.ethereum.org/EIPS/eip-7843 |
||
|
|
cbf3d8fed2
|
core/vm: touch precompile object with Amsterdam enabled (#33742)
https://eips.ethereum.org/EIPS/eip-7928 spec: > Precompiled contracts: Precompiles MUST be included when accessed. If a precompile receives value, it is recorded with a balance change. Otherwise, it is included with empty change lists. The precompiled contracts are not explicitly touched when they are invoked since Amsterdam fork. |
||
|
|
01fe1d716c
|
core/vm: disable the value transfer in syscall (#33741)
In src/ethereum/forks/amsterdam/vm/interpreter.py:299-304, the caller
address is
only tracked for block level accessList when there's a value transfer:
```python
if message.should_transfer_value and message.value != 0:
# Track value transfer
sender_balance = get_account(state, message.caller).balance
recipient_balance = get_account(state, message.current_target).balance
track_address(message.state_changes, message.caller) # Line 304
```
Since system transactions have should_transfer_value=False and value=0,
this condition is never met, so the caller (SYSTEM_ADDRESS) is not
tracked.
This condition is applied for the syscall in the geth implementation,
aligning with the spec of EIP7928.
---------
Co-authored-by: Felix Lange <fjl@twurst.com>
|
||
|
|
bbb1ab8d16
|
core/vm: 8024 tests should enforce explicit errors (#33787)
This PR makes `TestEIP8024_Execution` verify explicit error types (e.g., `ErrStackUnderflow` vs `ErrInvalidOpCode`) rather than accepting any error. It also fails fast on unexpected opcodes in the mini-interpreter to avoid false positives from missing opcode handling. |
||
|
|
bc0db302ed
|
core/vm: add missing PUSH0 handler in EIP-8024 test mini-interpreter (#33785) | ||
|
|
16a6531ac2
|
core: miner: reduce allocations in block building (#33375)
I recently went on a longer flight and started profiling the geth block
production pipeline.
This PR contains a bunch of individual fixes split into separate
commits.
I can drop some if necessary.
Benchmarking is not super easy, the benchmark I wrote is a bit
non-deterministic.
I will try to write a better benchmark later
```
goos: linux
goarch: amd64
pkg: github.com/ethereum/go-ethereum/miner
cpu: Intel(R) Core(TM) Ultra 7 155U
│ /tmp/old.txt │ /tmp/new.txt │
│ sec/op │ sec/op vs base │
BuildPayload-14 141.5µ ± 3% 146.0µ ± 6% ~ (p=0.346 n=200)
│ /tmp/old.txt │ /tmp/new.txt │
│ B/op │ B/op vs base │
BuildPayload-14 188.2Ki ± 4% 177.4Ki ± 4% -5.71% (p=0.018 n=200)
│ /tmp/old.txt │ /tmp/new.txt │
│ allocs/op │ allocs/op vs base │
BuildPayload-14 2.703k ± 4% 2.453k ± 5% -9.25% (p=0.000 n=200)
```
|
||
|
|
251b863107
|
core/vm: update EIP-8024 - Missing immediate byte is now treated as 0x00 (#33614)
This PR updates the EIP-8024 implementation to match the latest spec clarification. --------- Co-authored-by: lightclient <lightclient@protonmail.com> |
||
|
|
500931bc82
|
core/vm: add read only protection for opcodes (#33637)
This PR reverts a part of changes brought by https://github.com/ethereum/go-ethereum/pull/33281/changes Specifically, read-only protection should always be enforced at the opcode level, regardless of whether the check has already been performed during gas metering. It should act as a gatekeeper, otherwise, it is easy to introduce errors by adding new gas measurement logic without consistently applying the read-only protection. |
||
|
|
715bf8e81e
|
core: invoke selfdestruct tracer hooks during finalisation (#32919)
The core part of this PR that we need to adopt is to move the code and nonce change hook invocations to occur at tx finalization, instead of when the selfdestruct opcode is called. Additionally: * remove `SelfDestruct6780` now that it is essentially the same as `SelfDestruct` just gated by `is new contract` * don't duplicate `BalanceIncreaseSelfdestruct` (transfer to recipient of selfdestruct) in the hooked statedb and in the opcode handler for the selfdestruct opcode. * balance is burned immediately when the beneficiary of the selfdestruct is the sender, and the contract was created in the same transaction. Previously we emit two balance increases to the recipient (see above point), and a balance decrease from the sender. --------- Co-authored-by: Sina Mahmoodi <itz.s1na@gmail.com> Co-authored-by: Gary Rong <garyrong0905@gmail.com> Co-authored-by: lightclient <lightclient@protonmail.com> |
||
|
|
b6fb79cdf9
|
core/vm: in selfdestruct gas calculation, return early if there isn't enough gas to cover cold account access costs (#33450)
There's no need to perform the subsequent state access on the target if we already know that we are out of gas. This aligns the state access behavior of selfdestruct with EIP-7928 |
||
|
|
23c3498836
|
core/vm: check if read-only in gas handlers (#33281)
This PR causes execution to terminate at the gas handler in the case of sstore/call if they are invoked in a static execution context. This aligns the behavior with EIP 7928 by ensuring that we don't record any state reads in the access list from an SSTORE/CALL in this circumstance. --------- Co-authored-by: lightclient <lightclient@protonmail.com> |
||
|
|
957a3602d9
|
core/vm: avoid escape to heap (#33537) | ||
|
|
3f641dba87
|
trie, go.mod: remove all references to go-verkle and go-ipa (#33461)
In order to reduce the amount of code that is embedded into the keeper binary, I am removing all the verkle code that uses go-verkle and go-ipa. This will be followed by further PRs that are more like stubs to replace code when the keeper build is detected. I'm keeping the binary tree of course. This means that you will still see `isVerkle` variables all over the codebase, but they will be renamed when code is touched (i.e. this is not an invitation for 30+ AI slop PRs). --------- Co-authored-by: Gary Rong <garyrong0905@gmail.com> |
||
|
|
66134b35df
|
core/vm: fix PC increment for EIP-8024 opcodes (#33361)
The EIP says to increment PC by 2 _instead of_ the standard increment by 1. The opcode handlers added in #33095 result in incrementing PC by 3, because they ignored the increment already present in `interpreter.go`. Does this need to be better specified in the EIP? I've added a [new test case](https://github.com/ethereum/EIPs/pull/10859) for it anyway. Found by @0xriptide. |
||
|
|
3bbf5f5b6a
|
core/vm: improve memory resize (#33056)
Looks like (in some very EVM specific tests) we spent a lot of time
resizing memory. If the underlying array is big enough, we can speed it
up a bit by simply slicing the memory.
goos: linux
goarch: amd64
pkg: github.com/ethereum/go-ethereum/core/vm
cpu: Intel(R) Core(TM) Ultra 7 155U
│ /tmp/old.txt │ /tmp/new.txt │
│ sec/op │ sec/op vs base │
Resize-14 6.145n ± 9% 1.854n ± 14% -69.83% (p=0.000 n=10)
│ /tmp/old.txt │ /tmp/new.txt │
│ B/op │ B/op vs base │
Resize-14 5.000 ± 0% 5.000 ± 0% ~ (p=1.000 n=10)
│ /tmp/old.txt │ /tmp/new.txt │
│ allocs/op │ allocs/op vs base │
Resize-14 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
From the blocktest benchmark:
620ms 10.93s (flat, cum) 9.92% of Total
. . 80:func (m *Memory) Resize(size uint64) {
30ms 60ms 81: if uint64(m.Len()) < size {
590ms 10.87s 82: m.store = append(m.store, make([]byte, size-uint64(m.Len()))...)
. . 83: }
. . 84:}
---------
Co-authored-by: Felix Lange <fjl@twurst.com>
|
||
|
|
689ea10f35
|
core/vm: implement EIP-8024 (#33095)
EIP-8024: Backward compatible SWAPN, DUPN, EXCHANGE Introduces additional instructions for manipulating the stack which allow accessing the stack at higher depths. This is an initial implementation of the EIP, which is still in Review stage. |
||
|
|
982235f5e0
|
core/vm: remove todo (#33120)
Removes an unnecessary todo. This case is handled, the comment was an artifact from Kev's refactor |
||
|
|
b6a4ac9961
|
core/vm: don't call SetCode after contract creation if initcode didn't return anything (#32916)
The code change is a noop here, and the tracing hook shouldn't be invoked if the account code doesn't actually change. |
||
|
|
fc8c8c1314
|
core: refactor StateProcessor to accept ChainContext interface (#32739)
This pr implements https://github.com/ethereum/go-ethereum/issues/32733 to make StateProcessor more customisable. ## Compatibility notes This introduces a breaking change to users using geth EVM as a library. The `NewStateProcessor` function now takes one parameter which has the chainConfig embedded instead of 2 parameters. |
||
|
|
79a4f76b03
|
core/vm: using testing.B.Loop (#32660)
before: go test -run=^$ -bench=. ./core/vm/... -timeout=1h 1841.87s user 40.96s system 124% cpu 25:15.76 total after: go test -run=^$ -bench=. ./core/vm/... -timeout=1h 1588.65s user 33.79s system 123% cpu 21:53.25 total --------- Co-authored-by: lightclient <lightclient@protonmail.com> |
||
|
|
6a7f64e760
|
core/vm: use go-bigmodexpfix for modexp (#32576)
This changes the modexp precompile to use a fork of math/big with some patches by @GottfriedHerold to improve worst-case performance. |
||
|
|
41f580f209
|
core/vm: fix typo in CLZ doc (#32604)
Fixes typo in CLZ doc. |
||
|
|
b708feb9c3
|
core/vm: fix comment and remove unused divisor in osakaModexpGas (#32553)
The `divisor` const is not needed in the gas cost calculation in `osakaModexpGas`. |
||
|
|
dd7fe1be4b
|
core/vm: fix modexp gas calculation (#32568)
fixes a bug in the gas calculation found by oss-fuzz |
||
|
|
b381804eb1
|
core/vm: switch modexp gas computation to uint64 (#32527)
supersedes https://github.com/ethereum/go-ethereum/pull/32508/files and builts on top of https://github.com/ethereum/go-ethereum/pull/32184 looks like a ~60% decrease in allocations / op and ~20% speed increase (very variable, between 2-200%) ``` goos: linux goarch: amd64 pkg: github.com/ethereum/go-ethereum/core/vm cpu: Intel(R) Core(TM) Ultra 7 155U │ /tmp/old.txt │ /tmp/new.txt │ │ sec/op │ sec/op vs base │ PrecompiledModExp/eip_example1-Gas=13056-14 23.70µ ± 3% 22.31µ ± 6% -5.89% (p=0.004 n=10) PrecompiledModExp/eip_example2-Gas=13056-14 566.2n ± 12% 267.0n ± 3% -52.85% (p=0.000 n=10) PrecompiledModExp/nagydani-1-square-Gas=204-14 1285.5n ± 3% 995.8n ± 3% -22.54% (p=0.000 n=10) PrecompiledModExp/nagydani-1-qube-Gas=204-14 1.757µ ± 30% 1.410µ ± 16% -19.75% (p=0.000 n=10) PrecompiledModExp/nagydani-1-pow0x10001-Gas=3276-14 8.897µ ± 14% 6.664µ ± 2% -25.10% (p=0.000 n=10) PrecompiledModExp/nagydani-2-square-Gas=665-14 2.107µ ± 8% 1.470µ ± 11% -30.24% (p=0.000 n=10) PrecompiledModExp/nagydani-2-qube-Gas=665-14 3.142µ ± 3% 2.289µ ± 7% -27.16% (p=0.000 n=10) PrecompiledModExp/nagydani-2-pow0x10001-Gas=10649-14 14.76µ ± 3% 13.59µ ± 4% -7.94% (p=0.000 n=10) PrecompiledModExp/nagydani-3-square-Gas=1894-14 3.984µ ± 3% 3.211µ ± 3% -19.42% (p=0.000 n=10) PrecompiledModExp/nagydani-3-qube-Gas=1894-14 7.572µ ± 12% 6.153µ ± 3% -18.74% (p=0.000 n=10) PrecompiledModExp/nagydani-3-pow0x10001-Gas=30310-14 39.07µ ± 7% 37.76µ ± 5% ~ (p=0.123 n=10) PrecompiledModExp/nagydani-4-square-Gas=5580-14 9.613µ ± 2% 9.221µ ± 2% -4.08% (p=0.003 n=10) PrecompiledModExp/nagydani-4-qube-Gas=5580-14 21.66µ ± 5% 21.48µ ± 17% ~ (p=0.971 n=10) PrecompiledModExp/nagydani-4-pow0x10001-Gas=89292-14 120.7µ ± 8% 116.0µ ± 3% -3.93% (p=0.043 n=10) PrecompiledModExp/nagydani-5-square-Gas=17868-14 23.93µ ± 3% 24.82µ ± 3% +3.73% (p=0.000 n=10) PrecompiledModExp/nagydani-5-qube-Gas=17868-14 54.98µ ± 1% 58.08µ ± 4% +5.64% (p=0.000 n=10) PrecompiledModExp/nagydani-5-pow0x10001-Gas=285900-14 340.3µ ± 2% 341.2µ ± 3% ~ (p=0.529 n=10) PrecompiledModExpEip2565/eip_example1-Gas=1360-14 21.99µ ± 3% 21.24µ ± 2% -3.43% (p=0.000 n=10) PrecompiledModExpEip2565/eip_example2-Gas=1360-14 568.1n ± 12% 221.1n ± 2% -61.07% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-1-square-Gas=200-14 1272.0n ± 2% 822.3n ± 13% -35.35% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-1-qube-Gas=200-14 1.633µ ± 3% 1.397µ ± 21% -14.45% (p=0.023 n=10) PrecompiledModExpEip2565/nagydani-1-pow0x10001-Gas=341-14 7.276µ ± 3% 6.703µ ± 5% -7.88% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-2-square-Gas=200-14 1.959µ ± 3% 1.618µ ± 2% -17.43% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-2-qube-Gas=200-14 2.959µ ± 6% 2.611µ ± 5% -11.78% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-2-pow0x10001-Gas=1365-14 14.99µ ± 5% 13.76µ ± 4% -8.17% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-3-square-Gas=341-14 3.870µ ± 4% 3.521µ ± 2% -9.04% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-3-qube-Gas=341-14 6.871µ ± 3% 6.454µ ± 3% -6.07% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-3-pow0x10001-Gas=5461-14 40.18µ ± 7% 35.55µ ± 3% -11.52% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-4-square-Gas=1365-14 9.694µ ± 3% 8.427µ ± 3% -13.08% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-4-qube-Gas=1365-14 21.45µ ± 2% 19.48µ ± 7% -9.18% (p=0.001 n=10) PrecompiledModExpEip2565/nagydani-4-pow0x10001-Gas=21845-14 118.1µ ± 2% 113.7µ ± 2% -3.76% (p=0.003 n=10) PrecompiledModExpEip2565/nagydani-5-square-Gas=5461-14 25.80µ ± 5% 24.05µ ± 3% -6.76% (p=0.001 n=10) PrecompiledModExpEip2565/nagydani-5-qube-Gas=5461-14 57.28µ ± 8% 55.76µ ± 6% ~ (p=0.796 n=10) PrecompiledModExpEip2565/nagydani-5-pow0x10001-Gas=87381-14 335.2µ ± 2% 346.2µ ± 3% +3.28% (p=0.000 n=10) PrecompiledModExpEip2565/marius-1-even-Gas=2057-14 56.24µ ± 3% 55.53µ ± 1% ~ (p=0.280 n=10) PrecompiledModExpEip2565/guido-1-even-Gas=2298-14 38.74µ ± 3% 38.63µ ± 6% ~ (p=0.631 n=10) PrecompiledModExpEip2565/guido-2-even-Gas=2300-14 61.94µ ± 2% 61.38µ ± 11% ~ (p=0.529 n=10) PrecompiledModExpEip2565/guido-3-even-Gas=5400-14 20.27µ ± 2% 20.19µ ± 5% ~ (p=0.853 n=10) PrecompiledModExpEip2565/guido-4-even-Gas=1026-14 805.8n ± 3% 359.1n ± 2% -55.44% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-1-base-heavy-Gas=200-14 4.717µ ± 5% 3.925µ ± 5% -16.79% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-1-exp-heavy-Gas=215-14 15.51µ ± 3% 14.77µ ± 2% -4.76% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-1-balanced-Gas=200-14 10.42µ ± 2% 10.01µ ± 5% -3.94% (p=0.011 n=10) PrecompiledModExpEip2565/marcin-2-base-heavy-Gas=867-14 15.99µ ± 4% 15.65µ ± 4% ~ (p=0.190 n=10) PrecompiledModExpEip2565/marcin-2-exp-heavy-Gas=852-14 24.45µ ± 2% 23.36µ ± 3% -4.47% (p=0.002 n=10) PrecompiledModExpEip2565/marcin-2-balanced-Gas=996-14 34.59µ ± 29% 32.90µ ± 1% -4.90% (p=0.001 n=10) PrecompiledModExpEip2565/marcin-3-base-heavy-Gas=677-14 12.45µ ± 2% 12.00µ ± 16% ~ (p=0.105 n=10) PrecompiledModExpEip2565/marcin-3-exp-heavy-Gas=765-14 16.21µ ± 3% 15.58µ ± 6% ~ (p=0.063 n=10) PrecompiledModExpEip2565/marcin-3-balanced-Gas=1360-14 23.03µ ± 3% 21.34µ ± 2% -7.35% (p=0.000 n=10) PrecompiledModExpEip2565/mod-8-exp-648-Gas=215-14 17.44µ ± 3% 16.03µ ± 1% -8.07% (p=0.000 n=10) PrecompiledModExpEip2565/mod-8-exp-896-Gas=298-14 21.00µ ± 5% 19.52µ ± 2% -7.04% (p=0.000 n=10) PrecompiledModExpEip2565/mod-32-exp-32-Gas=200-14 9.549µ ± 2% 9.322µ ± 2% -2.38% (p=0.005 n=10) PrecompiledModExpEip2565/mod-32-exp-36-Gas=200-14 10.74µ ± 1% 10.31µ ± 2% -4.06% (p=0.000 n=10) PrecompiledModExpEip2565/mod-32-exp-40-Gas=208-14 11.95µ ± 2% 11.43µ ± 2% -4.33% (p=0.000 n=10) PrecompiledModExpEip2565/mod-32-exp-64-Gas=336-14 18.77µ ± 3% 18.10µ ± 2% -3.54% (p=0.002 n=10) PrecompiledModExpEip2565/mod-32-exp-65-Gas=341-14 13.58µ ± 1% 13.47µ ± 1% ~ (p=0.280 n=10) PrecompiledModExpEip2565/mod-32-exp-128-Gas=677-14 13.61µ ± 3% 13.36µ ± 1% -1.83% (p=0.000 n=10) PrecompiledModExpEip2565/mod-256-exp-2-Gas=341-14 6.984µ ± 2% 6.053µ ± 3% -13.33% (p=0.000 n=10) PrecompiledModExpEip2565/mod-264-exp-2-Gas=363-14 7.126µ ± 5% 6.344µ ± 7% -10.97% (p=0.000 n=10) PrecompiledModExpEip2565/mod-1024-exp-2-Gas=5461-14 52.41µ ± 22% 49.85µ ± 4% ~ (p=0.089 n=10) PrecompiledModExpEip2565/pawel-1-exp-heavy-Gas=298-14 20.93µ ± 32% 20.15µ ± 2% -3.69% (p=0.001 n=10) PrecompiledModExpEip2565/pawel-2-exp-heavy-Gas=425-14 19.32µ ± 17% 14.46µ ± 4% -25.16% (p=0.000 n=10) PrecompiledModExpEip2565/pawel-3-exp-heavy-Gas=501-14 20.22µ ± 15% 14.30µ ± 3% -29.27% (p=0.000 n=10) PrecompiledModExpEip2565/pawel-4-exp-heavy-Gas=506-14 14.33µ ± 3% 13.93µ ± 2% -2.80% (p=0.001 n=10) PrecompiledModExpEip2565/mod_vul_pawel_3_exp_8-Gas=200-14 24.30µ ± 16% 16.94µ ± 18% -30.30% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-1-square-Gas=500-14 1477.5n ± 5% 872.8n ± 9% -40.93% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-1-qube-Gas=500-14 2.099µ ± 8% 1.131µ ± 2% -46.13% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-1-pow0x10001-Gas=2048-14 8.920µ ± 4% 6.356µ ± 2% -28.74% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-2-square-Gas=512-14 2.227µ ± 4% 1.396µ ± 2% -37.34% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-2-qube-Gas=512-14 3.507µ ± 8% 2.421µ ± 13% -30.97% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-2-pow0x10001-Gas=8192-14 17.53µ ± 4% 14.17µ ± 5% -19.20% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-3-square-Gas=2048-14 4.801µ ± 12% 3.498µ ± 3% -27.15% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-3-qube-Gas=2048-14 8.284µ ± 4% 6.536µ ± 2% -21.10% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-3-pow0x10001-Gas=32768-14 44.82µ ± 6% 37.01µ ± 24% -17.43% (p=0.007 n=10) PrecompiledModExpEip7883/nagydani-4-square-Gas=8192-14 11.742µ ± 4% 9.000µ ± 4% -23.35% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-4-qube-Gas=8192-14 27.49µ ± 10% 21.34µ ± 5% -22.35% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-4-pow0x10001-Gas=131072-14 141.4µ ± 11% 113.4µ ± 3% -19.80% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-5-square-Gas=32768-14 31.46µ ± 5% 23.53µ ± 1% -25.21% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-5-qube-Gas=32768-14 78.12µ ± 20% 53.74µ ± 4% -31.20% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-5-pow0x10001-Gas=524288-14 446.3µ ± 6% 338.5µ ± 2% -24.15% (p=0.000 n=10) PrecompiledModExpEip7883/marius-1-even-Gas=45296-14 71.25µ ± 4% 55.33µ ± 1% -22.34% (p=0.000 n=10) PrecompiledModExpEip7883/guido-1-even-Gas=51136-14 51.06µ ± 14% 38.19µ ± 3% -25.20% (p=0.000 n=10) PrecompiledModExpEip7883/guido-2-even-Gas=51152-14 86.12µ ± 20% 60.65µ ± 2% -29.57% (p=0.000 n=10) PrecompiledModExpEip7883/guido-3-even-Gas=32400-14 27.53µ ± 32% 20.37µ ± 2% -26.02% (p=0.000 n=10) PrecompiledModExpEip7883/guido-4-even-Gas=94448-14 950.4n ± 5% 354.8n ± 28% -62.67% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-1-base-heavy-Gas=1152-14 5.619µ ± 7% 4.440µ ± 5% -20.98% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-1-exp-heavy-Gas=16624-14 19.03µ ± 19% 15.67µ ± 22% -17.63% (p=0.003 n=10) PrecompiledModExpEip7883/marcin-1-balanced-Gas=1200-14 13.83µ ± 19% 10.91µ ± 10% -21.16% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-2-base-heavy-Gas=5202-14 23.69µ ± 9% 17.79µ ± 13% -24.91% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-2-exp-heavy-Gas=16368-14 38.86µ ± 12% 25.69µ ± 14% -33.89% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-2-balanced-Gas=5978-14 51.47µ ± 28% 33.67µ ± 15% -34.58% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-3-base-heavy-Gas=2032-14 16.69µ ± 17% 12.08µ ± 2% -27.60% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-3-exp-heavy-Gas=4080-14 19.75µ ± 5% 16.13µ ± 11% -18.36% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-3-balanced-Gas=4080-14 28.66µ ± 9% 22.47µ ± 4% -21.59% (p=0.000 n=10) PrecompiledModExpEip7883/mod-8-exp-648-Gas=16624-14 20.78µ ± 14% 16.38µ ± 2% -21.17% (p=0.000 n=10) PrecompiledModExpEip7883/mod-8-exp-896-Gas=24560-14 24.35µ ± 10% 19.62µ ± 1% -19.43% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-32-Gas=500-14 10.312µ ± 4% 9.293µ ± 3% -9.88% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-36-Gas=560-14 11.69µ ± 18% 10.37µ ± 3% -11.27% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-40-Gas=624-14 14.17µ ± 24% 11.60µ ± 6% -18.13% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-64-Gas=1008-14 22.03µ ± 8% 18.22µ ± 2% -17.28% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-65-Gas=1024-14 16.48µ ± 11% 13.34µ ± 1% -19.04% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-128-Gas=2032-14 17.03µ ± 9% 13.44µ ± 1% -21.03% (p=0.000 n=10) PrecompiledModExpEip7883/mod-256-exp-2-Gas=2048-14 8.123µ ± 14% 5.962µ ± 3% -26.61% (p=0.000 n=10) PrecompiledModExpEip7883/mod-264-exp-2-Gas=2178-14 8.155µ ± 28% 6.799µ ± 4% -16.64% (p=0.000 n=10) PrecompiledModExpEip7883/mod-1024-exp-2-Gas=32768-14 62.32µ ± 4% 49.82µ ± 1% -20.06% (p=0.000 n=10) PrecompiledModExpEip7883/pawel-1-exp-heavy-Gas=24560-14 26.90µ ± 7% 20.30µ ± 2% -24.55% (p=0.000 n=10) PrecompiledModExpEip7883/pawel-2-exp-heavy-Gas=6128-14 17.67µ ± 2% 15.61µ ± 11% -11.66% (p=0.001 n=10) PrecompiledModExpEip7883/pawel-3-exp-heavy-Gas=2672-14 17.50µ ± 3% 14.88µ ± 8% -14.98% (p=0.002 n=10) PrecompiledModExpEip7883/pawel-4-exp-heavy-Gas=1520-14 17.32µ ± 2% 14.14µ ± 5% -18.39% (p=0.000 n=10) PrecompiledModExpEip7883/mod_vul_pawel_3_exp_8-Gas=1008-14 21.68µ ± 24% 17.07µ ± 3% -21.25% (p=0.000 n=10) geomean 14.64µ 12.02µ -17.89% │ /tmp/old.txt │ /tmp/new.txt │ │ gas/op │ gas/op vs base │ PrecompiledModExp/eip_example1-Gas=13056-14 13.06k ± 0% 13.06k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExp/eip_example2-Gas=13056-14 13.06k ± 0% 13.06k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExp/nagydani-1-square-Gas=204-14 204.0 ± 0% 204.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExp/nagydani-1-qube-Gas=204-14 204.0 ± 0% 204.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExp/nagydani-1-pow0x10001-Gas=3276-14 3.276k ± 0% 3.276k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExp/nagydani-2-square-Gas=665-14 665.0 ± 0% 665.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExp/nagydani-2-qube-Gas=665-14 665.0 ± 0% 665.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExp/nagydani-2-pow0x10001-Gas=10649-14 10.65k ± 0% 10.65k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExp/nagydani-3-square-Gas=1894-14 1.894k ± 0% 1.894k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExp/nagydani-3-qube-Gas=1894-14 1.894k ± 0% 1.894k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExp/nagydani-3-pow0x10001-Gas=30310-14 30.31k ± 0% 30.31k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExp/nagydani-4-square-Gas=5580-14 5.580k ± 0% 5.580k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExp/nagydani-4-qube-Gas=5580-14 5.580k ± 0% 5.580k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExp/nagydani-4-pow0x10001-Gas=89292-14 89.29k ± 0% 89.29k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExp/nagydani-5-square-Gas=17868-14 17.87k ± 0% 17.87k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExp/nagydani-5-qube-Gas=17868-14 17.87k ± 0% 17.87k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExp/nagydani-5-pow0x10001-Gas=285900-14 285.9k ± 0% 285.9k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/eip_example1-Gas=1360-14 1.360k ± 0% 1.360k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/eip_example2-Gas=1360-14 1.360k ± 0% 1.360k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/nagydani-1-square-Gas=200-14 200.0 ± 0% 200.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/nagydani-1-qube-Gas=200-14 200.0 ± 0% 200.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/nagydani-1-pow0x10001-Gas=341-14 341.0 ± 0% 341.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/nagydani-2-square-Gas=200-14 200.0 ± 0% 200.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/nagydani-2-qube-Gas=200-14 200.0 ± 0% 200.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/nagydani-2-pow0x10001-Gas=1365-14 1.365k ± 0% 1.365k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/nagydani-3-square-Gas=341-14 341.0 ± 0% 341.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/nagydani-3-qube-Gas=341-14 341.0 ± 0% 341.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/nagydani-3-pow0x10001-Gas=5461-14 5.461k ± 0% 5.461k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/nagydani-4-square-Gas=1365-14 1.365k ± 0% 1.365k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/nagydani-4-qube-Gas=1365-14 1.365k ± 0% 1.365k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/nagydani-4-pow0x10001-Gas=21845-14 21.84k ± 0% 21.84k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/nagydani-5-square-Gas=5461-14 5.461k ± 0% 5.461k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/nagydani-5-qube-Gas=5461-14 5.461k ± 0% 5.461k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/nagydani-5-pow0x10001-Gas=87381-14 87.38k ± 0% 87.38k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/marius-1-even-Gas=2057-14 2.057k ± 0% 2.057k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/guido-1-even-Gas=2298-14 2.298k ± 0% 2.298k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/guido-2-even-Gas=2300-14 2.300k ± 0% 2.300k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/guido-3-even-Gas=5400-14 5.400k ± 0% 5.400k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/guido-4-even-Gas=1026-14 1.026k ± 0% 1.026k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/marcin-1-base-heavy-Gas=200-14 200.0 ± 0% 200.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/marcin-1-exp-heavy-Gas=215-14 215.0 ± 0% 215.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/marcin-1-balanced-Gas=200-14 200.0 ± 0% 200.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/marcin-2-base-heavy-Gas=867-14 867.0 ± 0% 867.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/marcin-2-exp-heavy-Gas=852-14 852.0 ± 0% 852.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/marcin-2-balanced-Gas=996-14 996.0 ± 0% 996.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/marcin-3-base-heavy-Gas=677-14 677.0 ± 0% 677.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/marcin-3-exp-heavy-Gas=765-14 765.0 ± 0% 765.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/marcin-3-balanced-Gas=1360-14 1.360k ± 0% 1.360k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/mod-8-exp-648-Gas=215-14 215.0 ± 0% 215.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/mod-8-exp-896-Gas=298-14 298.0 ± 0% 298.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/mod-32-exp-32-Gas=200-14 200.0 ± 0% 200.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/mod-32-exp-36-Gas=200-14 200.0 ± 0% 200.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/mod-32-exp-40-Gas=208-14 208.0 ± 0% 208.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/mod-32-exp-64-Gas=336-14 336.0 ± 0% 336.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/mod-32-exp-65-Gas=341-14 341.0 ± 0% 341.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/mod-32-exp-128-Gas=677-14 677.0 ± 0% 677.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/mod-256-exp-2-Gas=341-14 341.0 ± 0% 341.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/mod-264-exp-2-Gas=363-14 363.0 ± 0% 363.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/mod-1024-exp-2-Gas=5461-14 5.461k ± 0% 5.461k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/pawel-1-exp-heavy-Gas=298-14 298.0 ± 0% 298.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/pawel-2-exp-heavy-Gas=425-14 425.0 ± 0% 425.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/pawel-3-exp-heavy-Gas=501-14 501.0 ± 0% 501.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/pawel-4-exp-heavy-Gas=506-14 506.0 ± 0% 506.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip2565/mod_vul_pawel_3_exp_8-Gas=200-14 200.0 ± 0% 200.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/nagydani-1-square-Gas=500-14 500.0 ± 0% 500.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/nagydani-1-qube-Gas=500-14 500.0 ± 0% 500.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/nagydani-1-pow0x10001-Gas=2048-14 2.048k ± 0% 2.048k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/nagydani-2-square-Gas=512-14 512.0 ± 0% 512.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/nagydani-2-qube-Gas=512-14 512.0 ± 0% 512.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/nagydani-2-pow0x10001-Gas=8192-14 8.192k ± 0% 8.192k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/nagydani-3-square-Gas=2048-14 2.048k ± 0% 2.048k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/nagydani-3-qube-Gas=2048-14 2.048k ± 0% 2.048k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/nagydani-3-pow0x10001-Gas=32768-14 32.77k ± 0% 32.77k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/nagydani-4-square-Gas=8192-14 8.192k ± 0% 8.192k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/nagydani-4-qube-Gas=8192-14 8.192k ± 0% 8.192k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/nagydani-4-pow0x10001-Gas=131072-14 131.1k ± 0% 131.1k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/nagydani-5-square-Gas=32768-14 32.77k ± 0% 32.77k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/nagydani-5-qube-Gas=32768-14 32.77k ± 0% 32.77k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/nagydani-5-pow0x10001-Gas=524288-14 524.3k ± 0% 524.3k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/marius-1-even-Gas=45296-14 45.30k ± 0% 45.30k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/guido-1-even-Gas=51136-14 51.14k ± 0% 51.14k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/guido-2-even-Gas=51152-14 51.15k ± 0% 51.15k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/guido-3-even-Gas=32400-14 32.40k ± 0% 32.40k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/guido-4-even-Gas=94448-14 94.45k ± 0% 94.45k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/marcin-1-base-heavy-Gas=1152-14 1.152k ± 0% 1.152k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/marcin-1-exp-heavy-Gas=16624-14 16.62k ± 0% 16.62k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/marcin-1-balanced-Gas=1200-14 1.200k ± 0% 1.200k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/marcin-2-base-heavy-Gas=5202-14 5.202k ± 0% 5.202k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/marcin-2-exp-heavy-Gas=16368-14 16.37k ± 0% 16.37k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/marcin-2-balanced-Gas=5978-14 5.978k ± 0% 5.978k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/marcin-3-base-heavy-Gas=2032-14 2.032k ± 0% 2.032k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/marcin-3-exp-heavy-Gas=4080-14 4.080k ± 0% 4.080k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/marcin-3-balanced-Gas=4080-14 4.080k ± 0% 4.080k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/mod-8-exp-648-Gas=16624-14 16.62k ± 0% 16.62k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/mod-8-exp-896-Gas=24560-14 24.56k ± 0% 24.56k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/mod-32-exp-32-Gas=500-14 500.0 ± 0% 500.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/mod-32-exp-36-Gas=560-14 560.0 ± 0% 560.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/mod-32-exp-40-Gas=624-14 624.0 ± 0% 624.0 ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/mod-32-exp-64-Gas=1008-14 1.008k ± 0% 1.008k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/mod-32-exp-65-Gas=1024-14 1.024k ± 0% 1.024k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/mod-32-exp-128-Gas=2032-14 2.032k ± 0% 2.032k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/mod-256-exp-2-Gas=2048-14 2.048k ± 0% 2.048k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/mod-264-exp-2-Gas=2178-14 2.178k ± 0% 2.178k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/mod-1024-exp-2-Gas=32768-14 32.77k ± 0% 32.77k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/pawel-1-exp-heavy-Gas=24560-14 24.56k ± 0% 24.56k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/pawel-2-exp-heavy-Gas=6128-14 6.128k ± 0% 6.128k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/pawel-3-exp-heavy-Gas=2672-14 2.672k ± 0% 2.672k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/pawel-4-exp-heavy-Gas=1520-14 1.520k ± 0% 1.520k ± 0% ~ (p=1.000 n=10) ¹ PrecompiledModExpEip7883/mod_vul_pawel_3_exp_8-Gas=1008-14 1.008k ± 0% 1.008k ± 0% ~ (p=1.000 n=10) ¹ geomean 2.342k 2.342k +0.00% ¹ all samples are equal │ /tmp/old.txt │ /tmp/new.txt │ │ mgas/s │ mgas/s vs base │ PrecompiledModExp/eip_example1-Gas=13056-14 550.8 ± 4% 585.3 ± 5% +6.26% (p=0.004 n=10) PrecompiledModExp/eip_example2-Gas=13056-14 23.06k ± 11% 48.91k ± 3% +112.09% (p=0.000 n=10) PrecompiledModExp/nagydani-1-square-Gas=204-14 158.7 ± 3% 204.8 ± 3% +29.08% (p=0.000 n=10) PrecompiledModExp/nagydani-1-qube-Gas=204-14 116.3 ± 23% 144.6 ± 14% +24.33% (p=0.000 n=10) PrecompiledModExp/nagydani-1-pow0x10001-Gas=3276-14 368.3 ± 16% 491.5 ± 2% +33.45% (p=0.000 n=10) PrecompiledModExp/nagydani-2-square-Gas=665-14 315.7 ± 7% 452.9 ± 10% +43.47% (p=0.000 n=10) PrecompiledModExp/nagydani-2-qube-Gas=665-14 211.6 ± 3% 290.6 ± 7% +37.28% (p=0.000 n=10) PrecompiledModExp/nagydani-2-pow0x10001-Gas=10649-14 721.6 ± 3% 783.8 ± 4% +8.62% (p=0.000 n=10) PrecompiledModExp/nagydani-3-square-Gas=1894-14 475.4 ± 3% 590.0 ± 3% +24.10% (p=0.000 n=10) PrecompiledModExp/nagydani-3-qube-Gas=1894-14 250.1 ± 11% 307.8 ± 3% +23.05% (p=0.000 n=10) PrecompiledModExp/nagydani-3-pow0x10001-Gas=30310-14 776.1 ± 6% 802.7 ± 5% ~ (p=0.123 n=10) PrecompiledModExp/nagydani-4-square-Gas=5580-14 580.5 ± 2% 605.1 ± 2% +4.25% (p=0.003 n=10) PrecompiledModExp/nagydani-4-qube-Gas=5580-14 257.6 ± 5% 259.8 ± 15% ~ (p=0.971 n=10) PrecompiledModExp/nagydani-4-pow0x10001-Gas=89292-14 739.7 ± 9% 770.0 ± 3% +4.09% (p=0.043 n=10) PrecompiledModExp/nagydani-5-square-Gas=17868-14 746.6 ± 3% 719.8 ± 3% -3.60% (p=0.000 n=10) PrecompiledModExp/nagydani-5-qube-Gas=17868-14 325.0 ± 1% 307.6 ± 4% -5.35% (p=0.000 n=10) PrecompiledModExp/nagydani-5-pow0x10001-Gas=285900-14 840.1 ± 2% 838.0 ± 3% ~ (p=0.529 n=10) PrecompiledModExpEip2565/eip_example1-Gas=1360-14 61.84 ± 3% 64.03 ± 2% +3.56% (p=0.000 n=10) PrecompiledModExpEip2565/eip_example2-Gas=1360-14 2.394k ± 11% 6.150k ± 2% +156.89% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-1-square-Gas=200-14 157.2 ± 2% 243.2 ± 11% +54.66% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-1-qube-Gas=200-14 122.4 ± 3% 143.2 ± 17% +16.90% (p=0.023 n=10) PrecompiledModExpEip2565/nagydani-1-pow0x10001-Gas=341-14 46.86 ± 3% 50.87 ± 4% +8.55% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-2-square-Gas=200-14 102.1 ± 3% 123.7 ± 2% +21.17% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-2-qube-Gas=200-14 67.59 ± 5% 76.60 ± 5% +13.34% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-2-pow0x10001-Gas=1365-14 91.06 ± 5% 99.16 ± 4% +8.90% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-3-square-Gas=341-14 88.09 ± 4% 96.86 ± 2% +9.96% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-3-qube-Gas=341-14 49.62 ± 3% 52.84 ± 3% +6.48% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-3-pow0x10001-Gas=5461-14 136.0 ± 6% 153.6 ± 3% +12.94% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-4-square-Gas=1365-14 140.8 ± 3% 161.9 ± 3% +15.02% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-4-qube-Gas=1365-14 63.62 ± 2% 70.05 ± 6% +10.12% (p=0.001 n=10) PrecompiledModExpEip2565/nagydani-4-pow0x10001-Gas=21845-14 184.9 ± 2% 192.2 ± 2% +3.92% (p=0.003 n=10) PrecompiledModExpEip2565/nagydani-5-square-Gas=5461-14 211.7 ± 5% 227.0 ± 3% +7.25% (p=0.001 n=10) PrecompiledModExpEip2565/nagydani-5-qube-Gas=5461-14 95.34 ± 9% 97.93 ± 6% ~ (p=0.796 n=10) PrecompiledModExpEip2565/nagydani-5-pow0x10001-Gas=87381-14 260.7 ± 2% 252.4 ± 3% -3.18% (p=0.000 n=10) PrecompiledModExpEip2565/marius-1-even-Gas=2057-14 36.57 ± 3% 37.03 ± 1% ~ (p=0.280 n=10) PrecompiledModExpEip2565/guido-1-even-Gas=2298-14 59.31 ± 3% 59.48 ± 5% ~ (p=0.631 n=10) PrecompiledModExpEip2565/guido-2-even-Gas=2300-14 37.13 ± 2% 37.47 ± 10% ~ (p=0.529 n=10) PrecompiledModExpEip2565/guido-3-even-Gas=5400-14 266.4 ± 2% 267.5 ± 5% ~ (p=0.838 n=10) PrecompiledModExpEip2565/guido-4-even-Gas=1026-14 1.274k ± 3% 2.857k ± 3% +124.34% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-1-base-heavy-Gas=200-14 42.39 ± 5% 50.95 ± 5% +20.18% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-1-exp-heavy-Gas=215-14 13.86 ± 3% 14.55 ± 2% +5.02% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-1-balanced-Gas=200-14 19.19 ± 2% 19.98 ± 5% +4.09% (p=0.011 n=10) PrecompiledModExpEip2565/marcin-2-base-heavy-Gas=867-14 54.23 ± 4% 55.39 ± 4% ~ (p=0.197 n=10) PrecompiledModExpEip2565/marcin-2-exp-heavy-Gas=852-14 34.84 ± 2% 36.47 ± 2% +4.68% (p=0.002 n=10) PrecompiledModExpEip2565/marcin-2-balanced-Gas=996-14 28.79 ± 23% 30.27 ± 1% +5.16% (p=0.001 n=10) PrecompiledModExpEip2565/marcin-3-base-heavy-Gas=677-14 54.37 ± 2% 56.42 ± 14% ~ (p=0.093 n=10) PrecompiledModExpEip2565/marcin-3-exp-heavy-Gas=765-14 47.19 ± 3% 49.11 ± 6% ~ (p=0.063 n=10) PrecompiledModExpEip2565/marcin-3-balanced-Gas=1360-14 59.05 ± 3% 63.73 ± 2% +7.94% (p=0.000 n=10) PrecompiledModExpEip2565/mod-8-exp-648-Gas=215-14 12.32 ± 3% 13.41 ± 1% +8.81% (p=0.000 n=10) PrecompiledModExpEip2565/mod-8-exp-896-Gas=298-14 14.19 ± 5% 15.26 ± 2% +7.58% (p=0.000 n=10) PrecompiledModExpEip2565/mod-32-exp-32-Gas=200-14 20.94 ± 2% 21.45 ± 2% +2.41% (p=0.005 n=10) PrecompiledModExpEip2565/mod-32-exp-36-Gas=200-14 18.61 ± 1% 19.40 ± 2% +4.25% (p=0.000 n=10) PrecompiledModExpEip2565/mod-32-exp-40-Gas=208-14 17.40 ± 2% 18.19 ± 2% +4.54% (p=0.000 n=10) PrecompiledModExpEip2565/mod-32-exp-64-Gas=336-14 17.90 ± 3% 18.55 ± 2% +3.66% (p=0.002 n=10) PrecompiledModExpEip2565/mod-32-exp-65-Gas=341-14 25.10 ± 1% 25.30 ± 1% ~ (p=0.306 n=10) PrecompiledModExpEip2565/mod-32-exp-128-Gas=677-14 49.74 ± 3% 50.66 ± 1% +1.86% (p=0.000 n=10) PrecompiledModExpEip2565/mod-256-exp-2-Gas=341-14 48.82 ± 2% 56.33 ± 3% +15.38% (p=0.000 n=10) PrecompiledModExpEip2565/mod-264-exp-2-Gas=363-14 50.94 ± 5% 57.22 ± 6% +12.33% (p=0.000 n=10) PrecompiledModExpEip2565/mod-1024-exp-2-Gas=5461-14 104.2 ± 18% 109.5 ± 4% ~ (p=0.085 n=10) PrecompiledModExpEip2565/pawel-1-exp-heavy-Gas=298-14 14.23 ± 24% 14.78 ± 2% +3.83% (p=0.001 n=10) PrecompiledModExpEip2565/pawel-2-exp-heavy-Gas=425-14 22.01 ± 20% 29.39 ± 4% +33.55% (p=0.000 n=10) PrecompiledModExpEip2565/pawel-3-exp-heavy-Gas=501-14 24.78 ± 17% 35.03 ± 3% +41.38% (p=0.000 n=10) PrecompiledModExpEip2565/pawel-4-exp-heavy-Gas=506-14 35.30 ± 3% 36.31 ± 2% +2.88% (p=0.001 n=10) PrecompiledModExpEip2565/mod_vul_pawel_3_exp_8-Gas=200-14 8.250 ± 14% 11.805 ± 15% +43.09% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-1-square-Gas=500-14 338.4 ± 5% 574.2 ± 9% +69.72% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-1-qube-Gas=500-14 238.3 ± 7% 442.1 ± 2% +85.54% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-1-pow0x10001-Gas=2048-14 229.6 ± 4% 322.2 ± 2% +40.32% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-2-square-Gas=512-14 229.9 ± 4% 366.8 ± 2% +59.55% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-2-qube-Gas=512-14 146.1 ± 7% 211.8 ± 11% +44.98% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-2-pow0x10001-Gas=8192-14 467.2 ± 4% 578.3 ± 5% +23.77% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-3-square-Gas=2048-14 426.6 ± 11% 585.5 ± 3% +37.26% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-3-qube-Gas=2048-14 247.2 ± 4% 313.4 ± 2% +26.76% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-3-pow0x10001-Gas=32768-14 731.1 ± 5% 885.5 ± 19% +21.11% (p=0.007 n=10) PrecompiledModExpEip7883/nagydani-4-square-Gas=8192-14 697.7 ± 4% 910.3 ± 4% +30.47% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-4-qube-Gas=8192-14 298.0 ± 9% 383.8 ± 5% +28.75% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-4-pow0x10001-Gas=131072-14 926.6 ± 10% 1155.5 ± 3% +24.70% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-5-square-Gas=32768-14 1.042k ± 5% 1.393k ± 1% +33.64% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-5-qube-Gas=32768-14 419.5 ± 16% 609.7 ± 4% +45.33% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-5-pow0x10001-Gas=524288-14 1.175k ± 5% 1.549k ± 2% +31.89% (p=0.000 n=10) PrecompiledModExpEip7883/marius-1-even-Gas=45296-14 635.8 ± 4% 818.6 ± 1% +28.76% (p=0.000 n=10) PrecompiledModExpEip7883/guido-1-even-Gas=51136-14 1.002k ± 13% 1.339k ± 3% +33.66% (p=0.000 n=10) PrecompiledModExpEip7883/guido-2-even-Gas=51152-14 594.0 ± 17% 843.3 ± 2% +41.97% (p=0.000 n=10) PrecompiledModExpEip7883/guido-3-even-Gas=32400-14 1.177k ± 24% 1.591k ± 2% +35.17% (p=0.000 n=10) PrecompiledModExpEip7883/guido-4-even-Gas=94448-14 99.37k ± 5% 266.13k ± 22% +167.81% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-1-base-heavy-Gas=1152-14 205.0 ± 7% 259.5 ± 5% +26.56% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-1-exp-heavy-Gas=16624-14 873.8 ± 16% 1061.0 ± 18% +21.43% (p=0.003 n=10) PrecompiledModExpEip7883/marcin-1-balanced-Gas=1200-14 86.77 ± 16% 110.00 ± 9% +26.77% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-2-base-heavy-Gas=5202-14 219.6 ± 8% 293.5 ± 12% +33.67% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-2-exp-heavy-Gas=16368-14 421.2 ± 14% 637.2 ± 13% +51.28% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-2-balanced-Gas=5978-14 116.2 ± 22% 177.6 ± 13% +52.86% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-3-base-heavy-Gas=2032-14 121.8 ± 14% 168.1 ± 2% +38.11% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-3-exp-heavy-Gas=4080-14 206.6 ± 5% 253.0 ± 10% +22.49% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-3-balanced-Gas=4080-14 142.4 ± 8% 181.6 ± 4% +27.57% (p=0.000 n=10) PrecompiledModExpEip7883/mod-8-exp-648-Gas=16624-14 799.9 ± 12% 1014.5 ± 2% +26.84% (p=0.000 n=10) PrecompiledModExpEip7883/mod-8-exp-896-Gas=24560-14 1.009k ± 9% 1.252k ± 1% +24.05% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-32-Gas=500-14 48.48 ± 4% 53.80 ± 3% +10.96% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-36-Gas=560-14 47.91 ± 15% 53.99 ± 3% +12.70% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-40-Gas=624-14 44.05 ± 19% 53.80 ± 6% +22.12% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-64-Gas=1008-14 45.75 ± 8% 55.31 ± 2% +20.90% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-65-Gas=1024-14 62.24 ± 12% 76.77 ± 1% +23.34% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-128-Gas=2032-14 119.3 ± 8% 151.1 ± 1% +26.66% (p=0.000 n=10) PrecompiledModExpEip7883/mod-256-exp-2-Gas=2048-14 252.2 ± 12% 343.6 ± 3% +36.25% (p=0.000 n=10) PrecompiledModExpEip7883/mod-264-exp-2-Gas=2178-14 267.1 ± 22% 320.4 ± 5% +19.91% (p=0.000 n=10) PrecompiledModExpEip7883/mod-1024-exp-2-Gas=32768-14 525.9 ± 3% 657.7 ± 1% +25.07% (p=0.000 n=10) PrecompiledModExpEip7883/pawel-1-exp-heavy-Gas=24560-14 913.0 ± 7% 1210.0 ± 1% +32.52% (p=0.000 n=10) PrecompiledModExpEip7883/pawel-2-exp-heavy-Gas=6128-14 346.8 ± 2% 392.7 ± 10% +13.24% (p=0.001 n=10) PrecompiledModExpEip7883/pawel-3-exp-heavy-Gas=2672-14 152.7 ± 3% 179.7 ± 8% +17.65% (p=0.002 n=10) PrecompiledModExpEip7883/pawel-4-exp-heavy-Gas=1520-14 87.73 ± 2% 107.55 ± 4% +22.59% (p=0.000 n=10) PrecompiledModExpEip7883/mod_vul_pawel_3_exp_8-Gas=1008-14 46.50 ± 20% 59.03 ± 3% +26.97% (p=0.000 n=10) geomean 159.9 194.8 +21.79% │ /tmp/old.txt │ /tmp/new.txt │ │ B/op │ B/op vs base │ PrecompiledModExp/eip_example1-Gas=13056-14 2.595Ki ± 0% 2.282Ki ± 0% -12.04% (p=0.000 n=10) PrecompiledModExp/eip_example2-Gas=13056-14 672.0 ± 0% 352.0 ± 0% -47.62% (p=0.000 n=10) PrecompiledModExp/nagydani-1-square-Gas=204-14 1160.0 ± 0% 888.0 ± 0% -23.45% (p=0.000 n=10) PrecompiledModExp/nagydani-1-qube-Gas=204-14 1.414Ki ± 0% 1.148Ki ± 0% -18.78% (p=0.000 n=10) PrecompiledModExp/nagydani-1-pow0x10001-Gas=3276-14 1.898Ki ± 0% 1.633Ki ± 0% -13.99% (p=0.000 n=10) PrecompiledModExp/nagydani-2-square-Gas=665-14 1.789Ki ± 0% 1.383Ki ± 0% -22.71% (p=0.000 n=10) PrecompiledModExp/nagydani-2-qube-Gas=665-14 2.321Ki ± 0% 1.915Ki ± 0% -17.50% (p=0.000 n=10) PrecompiledModExp/nagydani-2-pow0x10001-Gas=10649-14 3.196Ki ± 0% 2.790Ki ± 0% -12.71% (p=0.000 n=10) PrecompiledModExp/nagydani-3-square-Gas=1894-14 2.821Ki ± 0% 2.415Ki ± 0% -14.40% (p=0.000 n=10) PrecompiledModExp/nagydani-3-qube-Gas=1894-14 4.010Ki ± 0% 3.604Ki ± 0% -10.13% (p=0.000 n=10) PrecompiledModExp/nagydani-3-pow0x10001-Gas=30310-14 5.698Ki ± 0% 5.292Ki ± 0% -7.13% (p=0.000 n=10) PrecompiledModExp/nagydani-4-square-Gas=5580-14 5.042Ki ± 0% 4.636Ki ± 0% -8.06% (p=0.000 n=10) PrecompiledModExp/nagydani-4-qube-Gas=5580-14 11.93Ki ± 0% 11.52Ki ± 0% -3.42% (p=0.000 n=10) PrecompiledModExp/nagydani-4-pow0x10001-Gas=89292-14 15.30Ki ± 0% 14.89Ki ± 0% -2.66% (p=0.000 n=10) PrecompiledModExp/nagydani-5-square-Gas=17868-14 9.616Ki ± 0% 9.208Ki ± 0% -4.24% (p=0.000 n=10) PrecompiledModExp/nagydani-5-qube-Gas=17868-14 23.26Ki ± 0% 22.85Ki ± 0% -1.77% (p=0.000 n=10) PrecompiledModExp/nagydani-5-pow0x10001-Gas=285900-14 31.90Ki ± 0% 31.49Ki ± 0% -1.29% (p=0.000 n=10) PrecompiledModExpEip2565/eip_example1-Gas=1360-14 2.595Ki ± 0% 2.282Ki ± 0% -12.04% (p=0.000 n=10) PrecompiledModExpEip2565/eip_example2-Gas=1360-14 672.0 ± 0% 352.0 ± 0% -47.62% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-1-square-Gas=200-14 1160.0 ± 0% 888.0 ± 0% -23.45% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-1-qube-Gas=200-14 1.414Ki ± 0% 1.148Ki ± 0% -18.78% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-1-pow0x10001-Gas=341-14 1.898Ki ± 0% 1.633Ki ± 0% -13.99% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-2-square-Gas=200-14 1.648Ki ± 0% 1.383Ki ± 0% -16.11% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-2-qube-Gas=200-14 2.181Ki ± 0% 1.914Ki ± 0% -12.23% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-2-pow0x10001-Gas=1365-14 3.056Ki ± 0% 2.790Ki ± 0% -8.69% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-3-square-Gas=341-14 2.681Ki ± 0% 2.415Ki ± 0% -9.91% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-3-qube-Gas=341-14 3.869Ki ± 0% 3.604Ki ± 0% -6.87% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-3-pow0x10001-Gas=5461-14 5.558Ki ± 0% 5.292Ki ± 0% -4.78% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-4-square-Gas=1365-14 4.901Ki ± 0% 4.636Ki ± 0% -5.42% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-4-qube-Gas=1365-14 11.78Ki ± 0% 11.52Ki ± 0% -2.25% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-4-pow0x10001-Gas=21845-14 15.16Ki ± 0% 14.89Ki ± 0% -1.76% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-5-square-Gas=5461-14 9.475Ki ± 0% 9.209Ki ± 0% -2.80% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-5-qube-Gas=5461-14 23.12Ki ± 0% 22.85Ki ± 0% -1.15% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-5-pow0x10001-Gas=87381-14 31.75Ki ± 0% 31.49Ki ± 0% -0.83% (p=0.000 n=10) PrecompiledModExpEip2565/marius-1-even-Gas=2057-14 2.501Ki ± 0% 2.134Ki ± 0% -14.68% (p=0.000 n=10) PrecompiledModExpEip2565/guido-1-even-Gas=2298-14 2.470Ki ± 0% 2.103Ki ± 0% -14.87% (p=0.000 n=10) PrecompiledModExpEip2565/guido-2-even-Gas=2300-14 2.587Ki ± 0% 2.228Ki ± 0% -13.89% (p=0.000 n=10) PrecompiledModExpEip2565/guido-3-even-Gas=5400-14 8.271Ki ± 0% 8.014Ki ± 0% -3.12% (p=0.000 n=10) PrecompiledModExpEip2565/guido-4-even-Gas=1026-14 1056.0 ± 0% 680.0 ± 0% -35.61% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-1-base-heavy-Gas=200-14 2.954Ki ± 0% 2.696Ki ± 0% -8.73% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-1-exp-heavy-Gas=215-14 1.641Ki ± 0% 1.273Ki ± 0% -22.38% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-1-balanced-Gas=200-14 1.266Ki ± 0% 1.008Ki ± 0% -20.37% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-2-base-heavy-Gas=867-14 9.555Ki ± 0% 9.296Ki ± 0% -2.71% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-2-exp-heavy-Gas=852-14 2.047Ki ± 0% 1.688Ki ± 0% -17.56% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-2-balanced-Gas=996-14 1.993Ki ± 0% 1.727Ki ± 0% -13.38% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-3-base-heavy-Gas=677-14 2.587Ki ± 0% 2.282Ki ± 0% -11.78% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-3-exp-heavy-Gas=765-14 2.313Ki ± 0% 2.000Ki ± 0% -13.55% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-3-balanced-Gas=1360-14 2.610Ki ± 0% 2.298Ki ± 0% -11.97% (p=0.000 n=10) PrecompiledModExpEip2565/mod-8-exp-648-Gas=215-14 1.860Ki ± 0% 1.492Ki ± 0% -19.79% (p=0.000 n=10) PrecompiledModExpEip2565/mod-8-exp-896-Gas=298-14 1.876Ki ± 0% 1.508Ki ± 0% -19.60% (p=0.000 n=10) PrecompiledModExpEip2565/mod-32-exp-32-Gas=200-14 1192.0 ± 0% 920.0 ± 0% -22.82% (p=0.000 n=10) PrecompiledModExpEip2565/mod-32-exp-36-Gas=200-14 1.305Ki ± 0% 1.039Ki ± 0% -20.36% (p=0.000 n=10) PrecompiledModExpEip2565/mod-32-exp-40-Gas=208-14 1184.0 ± 0% 920.0 ± 0% -22.30% (p=0.000 n=10) PrecompiledModExpEip2565/mod-32-exp-64-Gas=336-14 1184.0 ± 0% 920.0 ± 0% -22.30% (p=0.000 n=10) PrecompiledModExpEip2565/mod-32-exp-65-Gas=341-14 3.071Ki ± 0% 2.767Ki ± 0% -9.92% (p=0.000 n=10) PrecompiledModExpEip2565/mod-32-exp-128-Gas=677-14 3.071Ki ± 0% 2.767Ki ± 0% -9.92% (p=0.000 n=10) PrecompiledModExpEip2565/mod-256-exp-2-Gas=341-14 3.869Ki ± 0% 3.604Ki ± 0% -6.87% (p=0.000 n=10) PrecompiledModExpEip2565/mod-264-exp-2-Gas=363-14 3.986Ki ± 0% 3.729Ki ± 0% -6.47% (p=0.000 n=10) PrecompiledModExpEip2565/mod-1024-exp-2-Gas=5461-14 24.12Ki ± 0% 23.85Ki ± 0% -1.10% (p=0.000 n=10) PrecompiledModExpEip2565/pawel-1-exp-heavy-Gas=298-14 1.931Ki ± 0% 1.563Ki ± 0% -19.02% (p=0.000 n=10) PrecompiledModExpEip2565/pawel-2-exp-heavy-Gas=425-14 2.438Ki ± 0% 2.071Ki ± 0% -15.06% (p=0.000 n=10) PrecompiledModExpEip2565/pawel-3-exp-heavy-Gas=501-14 2.798Ki ± 0% 2.485Ki ± 0% -11.17% (p=0.000 n=10) PrecompiledModExpEip2565/pawel-4-exp-heavy-Gas=506-14 3.080Ki ± 0% 2.774Ki ± 0% -9.92% (p=0.000 n=10) PrecompiledModExpEip2565/mod_vul_pawel_3_exp_8-Gas=200-14 1064.0 ± 0% 800.0 ± 0% -24.81% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-1-square-Gas=500-14 1152.0 ± 0% 888.0 ± 0% -22.92% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-1-qube-Gas=500-14 1.406Ki ± 0% 1.148Ki ± 0% -18.33% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-1-pow0x10001-Gas=2048-14 1.891Ki ± 0% 1.633Ki ± 0% -13.64% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-2-square-Gas=512-14 1.641Ki ± 0% 1.383Ki ± 0% -15.71% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-2-qube-Gas=512-14 2.173Ki ± 0% 1.915Ki ± 0% -11.87% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-2-pow0x10001-Gas=8192-14 3.048Ki ± 0% 2.790Ki ± 0% -8.46% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-3-square-Gas=2048-14 2.673Ki ± 0% 2.415Ki ± 0% -9.65% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-3-qube-Gas=2048-14 3.861Ki ± 0% 3.604Ki ± 0% -6.68% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-3-pow0x10001-Gas=32768-14 5.550Ki ± 0% 5.292Ki ± 0% -4.65% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-4-square-Gas=8192-14 4.894Ki ± 0% 4.636Ki ± 0% -5.27% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-4-qube-Gas=8192-14 11.78Ki ± 0% 11.52Ki ± 0% -2.20% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-4-pow0x10001-Gas=131072-14 15.15Ki ± 0% 14.89Ki ± 0% -1.71% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-5-square-Gas=32768-14 9.468Ki ± 0% 9.208Ki ± 0% -2.74% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-5-qube-Gas=32768-14 23.11Ki ± 0% 22.85Ki ± 0% -1.13% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-5-pow0x10001-Gas=524288-14 31.75Ki ± 0% 31.49Ki ± 0% -0.81% (p=0.000 n=10) PrecompiledModExpEip7883/marius-1-even-Gas=45296-14 2.548Ki ± 0% 2.134Ki ± 0% -16.25% (p=0.000 n=10) PrecompiledModExpEip7883/guido-1-even-Gas=51136-14 2.517Ki ± 0% 2.103Ki ± 0% -16.45% (p=0.000 n=10) PrecompiledModExpEip7883/guido-2-even-Gas=51152-14 2.642Ki ± 0% 2.228Ki ± 0% -15.67% (p=0.000 n=10) PrecompiledModExpEip7883/guido-3-even-Gas=32400-14 8.271Ki ± 0% 8.014Ki ± 0% -3.12% (p=0.000 n=10) PrecompiledModExpEip7883/guido-4-even-Gas=94448-14 1104.0 ± 0% 680.0 ± 0% -38.41% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-1-base-heavy-Gas=1152-14 2.954Ki ± 0% 2.696Ki ± 0% -8.73% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-1-exp-heavy-Gas=16624-14 1.688Ki ± 0% 1.273Ki ± 0% -24.54% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-1-balanced-Gas=1200-14 1.266Ki ± 0% 1.008Ki ± 0% -20.37% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-2-base-heavy-Gas=5202-14 9.554Ki ± 0% 9.296Ki ± 0% -2.70% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-2-exp-heavy-Gas=16368-14 2.102Ki ± 0% 1.688Ki ± 0% -19.72% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-2-balanced-Gas=5978-14 1.985Ki ± 0% 1.727Ki ± 0% -13.03% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-3-base-heavy-Gas=2032-14 2.634Ki ± 0% 2.282Ki ± 0% -13.35% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-3-exp-heavy-Gas=4080-14 2.368Ki ± 0% 2.000Ki ± 0% -15.55% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-3-balanced-Gas=4080-14 2.665Ki ± 0% 2.298Ki ± 0% -13.78% (p=0.000 n=10) PrecompiledModExpEip7883/mod-8-exp-648-Gas=16624-14 1.907Ki ± 0% 1.492Ki ± 0% -21.76% (p=0.000 n=10) PrecompiledModExpEip7883/mod-8-exp-896-Gas=24560-14 1.923Ki ± 0% 1.508Ki ± 0% -21.58% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-32-Gas=500-14 1240.0 ± 0% 920.0 ± 0% -25.81% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-36-Gas=560-14 1.352Ki ± 0% 1.039Ki ± 0% -23.12% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-40-Gas=624-14 1240.0 ± 0% 920.0 ± 0% -25.81% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-64-Gas=1008-14 1240.0 ± 0% 920.0 ± 0% -25.81% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-65-Gas=1024-14 3.118Ki ± 0% 2.767Ki ± 0% -11.27% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-128-Gas=2032-14 3.118Ki ± 0% 2.767Ki ± 0% -11.27% (p=0.000 n=10) PrecompiledModExpEip7883/mod-256-exp-2-Gas=2048-14 3.861Ki ± 0% 3.604Ki ± 0% -6.68% (p=0.000 n=10) PrecompiledModExpEip7883/mod-264-exp-2-Gas=2178-14 3.986Ki ± 0% 3.729Ki ± 0% -6.47% (p=0.000 n=10) PrecompiledModExpEip7883/mod-1024-exp-2-Gas=32768-14 24.12Ki ± 0% 23.85Ki ± 0% -1.09% (p=0.000 n=10) PrecompiledModExpEip7883/pawel-1-exp-heavy-Gas=24560-14 1.978Ki ± 0% 1.562Ki ± 0% -20.99% (p=0.000 n=10) PrecompiledModExpEip7883/pawel-2-exp-heavy-Gas=6128-14 2.485Ki ± 0% 2.071Ki ± 0% -16.66% (p=0.000 n=10) PrecompiledModExpEip7883/pawel-3-exp-heavy-Gas=2672-14 2.853Ki ± 0% 2.485Ki ± 0% -12.87% (p=0.000 n=10) PrecompiledModExpEip7883/pawel-4-exp-heavy-Gas=1520-14 3.127Ki ± 0% 2.774Ki ± 0% -11.27% (p=0.000 n=10) PrecompiledModExpEip7883/mod_vul_pawel_3_exp_8-Gas=1008-14 1120.0 ± 0% 800.0 ± 0% -28.57% (p=0.000 n=10) geomean 3.164Ki 2.718Ki -14.08% │ /tmp/old.txt │ /tmp/new.txt │ │ allocs/op │ allocs/op vs base │ PrecompiledModExp/eip_example1-Gas=13056-14 37.00 ± 0% 30.00 ± 0% -18.92% (p=0.000 n=10) PrecompiledModExp/eip_example2-Gas=13056-14 13.000 ± 0% 6.000 ± 0% -53.85% (p=0.000 n=10) PrecompiledModExp/nagydani-1-square-Gas=204-14 18.00 ± 0% 10.00 ± 0% -44.44% (p=0.000 n=10) PrecompiledModExp/nagydani-1-qube-Gas=204-14 19.00 ± 0% 11.00 ± 0% -42.11% (p=0.000 n=10) PrecompiledModExp/nagydani-1-pow0x10001-Gas=3276-14 22.00 ± 0% 14.00 ± 0% -36.36% (p=0.000 n=10) PrecompiledModExp/nagydani-2-square-Gas=665-14 23.00 ± 0% 10.00 ± 0% -56.52% (p=0.000 n=10) PrecompiledModExp/nagydani-2-qube-Gas=665-14 24.00 ± 0% 11.00 ± 0% -54.17% (p=0.000 n=10) PrecompiledModExp/nagydani-2-pow0x10001-Gas=10649-14 27.00 ± 0% 14.00 ± 0% -48.15% (p=0.000 n=10) PrecompiledModExp/nagydani-3-square-Gas=1894-14 23.00 ± 0% 10.00 ± 0% -56.52% (p=0.000 n=10) PrecompiledModExp/nagydani-3-qube-Gas=1894-14 24.00 ± 0% 11.00 ± 0% -54.17% (p=0.000 n=10) PrecompiledModExp/nagydani-3-pow0x10001-Gas=30310-14 27.00 ± 0% 14.00 ± 0% -48.15% (p=0.000 n=10) PrecompiledModExp/nagydani-4-square-Gas=5580-14 23.00 ± 0% 10.00 ± 0% -56.52% (p=0.000 n=10) PrecompiledModExp/nagydani-4-qube-Gas=5580-14 25.00 ± 0% 12.00 ± 0% -52.00% (p=0.000 n=10) PrecompiledModExp/nagydani-4-pow0x10001-Gas=89292-14 28.00 ± 0% 15.00 ± 0% -46.43% (p=0.000 n=10) PrecompiledModExp/nagydani-5-square-Gas=17868-14 24.00 ± 0% 11.00 ± 0% -54.17% (p=0.000 n=10) PrecompiledModExp/nagydani-5-qube-Gas=17868-14 26.00 ± 0% 13.00 ± 0% -50.00% (p=0.000 n=10) PrecompiledModExp/nagydani-5-pow0x10001-Gas=285900-14 44.00 ± 0% 31.00 ± 0% -29.55% (p=0.000 n=10) PrecompiledModExpEip2565/eip_example1-Gas=1360-14 37.00 ± 0% 30.00 ± 0% -18.92% (p=0.000 n=10) PrecompiledModExpEip2565/eip_example2-Gas=1360-14 13.000 ± 0% 6.000 ± 0% -53.85% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-1-square-Gas=200-14 18.00 ± 0% 10.00 ± 0% -44.44% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-1-qube-Gas=200-14 19.00 ± 0% 11.00 ± 0% -42.11% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-1-pow0x10001-Gas=341-14 22.00 ± 0% 14.00 ± 0% -36.36% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-2-square-Gas=200-14 18.00 ± 0% 10.00 ± 0% -44.44% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-2-qube-Gas=200-14 19.00 ± 0% 11.00 ± 0% -42.11% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-2-pow0x10001-Gas=1365-14 22.00 ± 0% 14.00 ± 0% -36.36% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-3-square-Gas=341-14 18.00 ± 0% 10.00 ± 0% -44.44% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-3-qube-Gas=341-14 19.00 ± 0% 11.00 ± 0% -42.11% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-3-pow0x10001-Gas=5461-14 22.00 ± 0% 14.00 ± 0% -36.36% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-4-square-Gas=1365-14 18.00 ± 0% 10.00 ± 0% -44.44% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-4-qube-Gas=1365-14 20.00 ± 0% 12.00 ± 0% -40.00% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-4-pow0x10001-Gas=21845-14 23.00 ± 0% 15.00 ± 0% -34.78% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-5-square-Gas=5461-14 19.00 ± 0% 11.00 ± 0% -42.11% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-5-qube-Gas=5461-14 21.00 ± 0% 13.00 ± 0% -38.10% (p=0.000 n=10) PrecompiledModExpEip2565/nagydani-5-pow0x10001-Gas=87381-14 39.00 ± 0% 31.00 ± 0% -20.51% (p=0.000 n=10) PrecompiledModExpEip2565/marius-1-even-Gas=2057-14 52.00 ± 0% 43.00 ± 0% -17.31% (p=0.000 n=10) PrecompiledModExpEip2565/guido-1-even-Gas=2298-14 55.00 ± 0% 46.00 ± 0% -16.36% (p=0.000 n=10) PrecompiledModExpEip2565/guido-2-even-Gas=2300-14 52.00 ± 0% 44.00 ± 0% -15.38% (p=0.000 n=10) PrecompiledModExpEip2565/guido-3-even-Gas=5400-14 19.00 ± 0% 12.00 ± 0% -36.84% (p=0.000 n=10) PrecompiledModExpEip2565/guido-4-even-Gas=1026-14 18.000 ± 0% 9.000 ± 0% -50.00% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-1-base-heavy-Gas=200-14 18.00 ± 0% 11.00 ± 0% -38.89% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-1-exp-heavy-Gas=215-14 37.00 ± 0% 28.00 ± 0% -24.32% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-1-balanced-Gas=200-14 19.00 ± 0% 12.00 ± 0% -36.84% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-2-base-heavy-Gas=867-14 19.00 ± 0% 12.00 ± 0% -36.84% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-2-exp-heavy-Gas=852-14 36.00 ± 0% 28.00 ± 0% -22.22% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-2-balanced-Gas=996-14 23.00 ± 0% 15.00 ± 0% -34.78% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-3-base-heavy-Gas=677-14 36.00 ± 0% 28.00 ± 0% -22.22% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-3-exp-heavy-Gas=765-14 35.00 ± 0% 28.00 ± 0% -20.00% (p=0.000 n=10) PrecompiledModExpEip2565/marcin-3-balanced-Gas=1360-14 35.00 ± 0% 28.00 ± 0% -20.00% (p=0.000 n=10) PrecompiledModExpEip2565/mod-8-exp-648-Gas=215-14 50.00 ± 0% 41.00 ± 0% -18.00% (p=0.000 n=10) PrecompiledModExpEip2565/mod-8-exp-896-Gas=298-14 50.00 ± 0% 41.00 ± 0% -18.00% (p=0.000 n=10) PrecompiledModExpEip2565/mod-32-exp-32-Gas=200-14 21.00 ± 0% 13.00 ± 0% -38.10% (p=0.000 n=10) PrecompiledModExpEip2565/mod-32-exp-36-Gas=200-14 22.00 ± 0% 14.00 ± 0% -36.36% (p=0.000 n=10) PrecompiledModExpEip2565/mod-32-exp-40-Gas=208-14 20.00 ± 0% 13.00 ± 0% -35.00% (p=0.000 n=10) PrecompiledModExpEip2565/mod-32-exp-64-Gas=336-14 20.00 ± 0% 13.00 ± 0% -35.00% (p=0.000 n=10) PrecompiledModExpEip2565/mod-32-exp-65-Gas=341-14 52.00 ± 0% 44.00 ± 0% -15.38% (p=0.000 n=10) PrecompiledModExpEip2565/mod-32-exp-128-Gas=677-14 52.00 ± 0% 44.00 ± 0% -15.38% (p=0.000 n=10) PrecompiledModExpEip2565/mod-256-exp-2-Gas=341-14 19.00 ± 0% 11.00 ± 0% -42.11% (p=0.000 n=10) PrecompiledModExpEip2565/mod-264-exp-2-Gas=363-14 18.00 ± 0% 11.00 ± 0% -38.89% (p=0.000 n=10) PrecompiledModExpEip2565/mod-1024-exp-2-Gas=5461-14 22.00 ± 0% 14.00 ± 0% -36.36% (p=0.000 n=10) PrecompiledModExpEip2565/pawel-1-exp-heavy-Gas=298-14 52.00 ± 0% 43.00 ± 0% -17.31% (p=0.000 n=10) PrecompiledModExpEip2565/pawel-2-exp-heavy-Gas=425-14 54.00 ± 0% 45.00 ± 0% -16.67% (p=0.000 n=10) PrecompiledModExpEip2565/pawel-3-exp-heavy-Gas=501-14 52.00 ± 0% 45.00 ± 0% -13.46% (p=0.000 n=10) PrecompiledModExpEip2565/pawel-4-exp-heavy-Gas=506-14 53.00 ± 0% 45.00 ± 0% -15.09% (p=0.000 n=10) PrecompiledModExpEip2565/mod_vul_pawel_3_exp_8-Gas=200-14 19.00 ± 0% 12.00 ± 0% -36.84% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-1-square-Gas=500-14 17.00 ± 0% 10.00 ± 0% -41.18% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-1-qube-Gas=500-14 18.00 ± 0% 11.00 ± 0% -38.89% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-1-pow0x10001-Gas=2048-14 21.00 ± 0% 14.00 ± 0% -33.33% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-2-square-Gas=512-14 17.00 ± 0% 10.00 ± 0% -41.18% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-2-qube-Gas=512-14 18.00 ± 0% 11.00 ± 0% -38.89% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-2-pow0x10001-Gas=8192-14 21.00 ± 0% 14.00 ± 0% -33.33% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-3-square-Gas=2048-14 17.00 ± 0% 10.00 ± 0% -41.18% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-3-qube-Gas=2048-14 18.00 ± 0% 11.00 ± 0% -38.89% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-3-pow0x10001-Gas=32768-14 21.00 ± 0% 14.00 ± 0% -33.33% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-4-square-Gas=8192-14 17.00 ± 0% 10.00 ± 0% -41.18% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-4-qube-Gas=8192-14 19.00 ± 0% 12.00 ± 0% -36.84% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-4-pow0x10001-Gas=131072-14 22.00 ± 0% 15.00 ± 0% -31.82% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-5-square-Gas=32768-14 18.00 ± 0% 11.00 ± 0% -38.89% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-5-qube-Gas=32768-14 20.00 ± 0% 13.00 ± 0% -35.00% (p=0.000 n=10) PrecompiledModExpEip7883/nagydani-5-pow0x10001-Gas=524288-14 38.00 ± 0% 31.00 ± 0% -18.42% (p=0.000 n=10) PrecompiledModExpEip7883/marius-1-even-Gas=45296-14 53.00 ± 0% 43.00 ± 0% -18.87% (p=0.000 n=10) PrecompiledModExpEip7883/guido-1-even-Gas=51136-14 56.00 ± 0% 46.00 ± 0% -17.86% (p=0.000 n=10) PrecompiledModExpEip7883/guido-2-even-Gas=51152-14 54.00 ± 0% 44.00 ± 0% -18.52% (p=0.000 n=10) PrecompiledModExpEip7883/guido-3-even-Gas=32400-14 19.00 ± 0% 12.00 ± 0% -36.84% (p=0.000 n=10) PrecompiledModExpEip7883/guido-4-even-Gas=94448-14 19.000 ± 0% 9.000 ± 0% -52.63% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-1-base-heavy-Gas=1152-14 18.00 ± 0% 11.00 ± 0% -38.89% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-1-exp-heavy-Gas=16624-14 38.00 ± 0% 28.00 ± 0% -26.32% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-1-balanced-Gas=1200-14 19.00 ± 0% 12.00 ± 0% -36.84% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-2-base-heavy-Gas=5202-14 19.00 ± 0% 12.00 ± 0% -36.84% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-2-exp-heavy-Gas=16368-14 38.00 ± 0% 28.00 ± 0% -26.32% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-2-balanced-Gas=5978-14 22.00 ± 0% 15.00 ± 0% -31.82% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-3-base-heavy-Gas=2032-14 37.00 ± 0% 28.00 ± 0% -24.32% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-3-exp-heavy-Gas=4080-14 37.00 ± 0% 28.00 ± 0% -24.32% (p=0.000 n=10) PrecompiledModExpEip7883/marcin-3-balanced-Gas=4080-14 37.00 ± 0% 28.00 ± 0% -24.32% (p=0.000 n=10) PrecompiledModExpEip7883/mod-8-exp-648-Gas=16624-14 51.00 ± 0% 41.00 ± 0% -19.61% (p=0.000 n=10) PrecompiledModExpEip7883/mod-8-exp-896-Gas=24560-14 51.00 ± 0% 41.00 ± 0% -19.61% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-32-Gas=500-14 22.00 ± 0% 13.00 ± 0% -40.91% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-36-Gas=560-14 23.00 ± 0% 14.00 ± 0% -39.13% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-40-Gas=624-14 22.00 ± 0% 13.00 ± 0% -40.91% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-64-Gas=1008-14 22.00 ± 0% 13.00 ± 0% -40.91% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-65-Gas=1024-14 53.00 ± 0% 44.00 ± 0% -16.98% (p=0.000 n=10) PrecompiledModExpEip7883/mod-32-exp-128-Gas=2032-14 53.00 ± 0% 44.00 ± 0% -16.98% (p=0.000 n=10) PrecompiledModExpEip7883/mod-256-exp-2-Gas=2048-14 18.00 ± 0% 11.00 ± 0% -38.89% (p=0.000 n=10) PrecompiledModExpEip7883/mod-264-exp-2-Gas=2178-14 18.00 ± 0% 11.00 ± 0% -38.89% (p=0.000 n=10) PrecompiledModExpEip7883/mod-1024-exp-2-Gas=32768-14 21.00 ± 0% 14.00 ± 0% -33.33% (p=0.000 n=10) PrecompiledModExpEip7883/pawel-1-exp-heavy-Gas=24560-14 53.00 ± 0% 43.00 ± 0% -18.87% (p=0.000 n=10) PrecompiledModExpEip7883/pawel-2-exp-heavy-Gas=6128-14 55.00 ± 0% 45.00 ± 0% -18.18% (p=0.000 n=10) PrecompiledModExpEip7883/pawel-3-exp-heavy-Gas=2672-14 54.00 ± 0% 45.00 ± 0% -16.67% (p=0.000 n=10) PrecompiledModExpEip7883/pawel-4-exp-heavy-Gas=1520-14 54.00 ± 0% 45.00 ± 0% -16.67% (p=0.000 n=10) PrecompiledModExpEip7883/mod_vul_pawel_3_exp_8-Gas=1008-14 21.00 ± 0% 12.00 ± 0% -42.86% (p=0.000 n=10) geomean 26.59 17.27 -35.03% ``` Co-authored-by: @kevaundray Co-authored-by: Felix Lange <fjl@twurst.com> |