Please see the readme of each respective repo for how benchmarking was conducted.
| Framework | Init | Help | Compile | Test | Deploy | Total |
|---|---|---|---|---|---|---|
| mox | 0.04s | 0.049s | 0.587s | 0.625s | 0.549s | 1.850s |
| hardhat | - | 0.391s | 0.398s | 0.701s | 0.670s | 2.160s + X |
| brownie | 0.42s | 0.433s | 0.393s | 3.229s | 3.045s | 7.520s |
| ape | 0.11s | 0.266s | 1.319s | - | 1.306s | 3.001s + X |
| forge | 0.20s | 0.013s | 0.112s | 0.350s | 0.292s | 0.967s |
Note: For the frameworks with missing values (hardhat and ape), the total is calculated using the available data, treating the missing values as 0.
| Framework | Compile |
|---|---|
| mox | 5.859s |
| forge | 8.903s |
| ape | 7.250s |
All tests were conducted with the following OS/techniques.
- macOS: 14.6.1
- Apple M3 Max
- 128 GB
- command:
timeusing thetotaloutput
You need a lot of stuff installed to run the benchmarks, including:
- yarn
- just
- foundry
- moccasin
- ape
- brownie
- uv
- bash
I'm not going to list install instructions for them all.
Run:
justThe init command was tested separately, because it was a pain to get the justfile working.
- Moccasin (0.3.0)
- Hardhat (2.22.11)
- Brownie (1.20.6)
- Ape (0.8.14)
- Foundry (0.2.0) @
fdd321b
Is this fair? Not really. Each framework has tradeoffs, and any attempt to measure will result in some form of cherry-picking, so it'll never be 100% fair. But at the same time, experiments like this are the best way for us to reason about the world. So, understand each data piece has caveats, but use it to help fuel your decisions!