Skip to content

Commit 9062fde

Browse files
authored
chore: tweak optimizations in profiles (foundry-rs#5580)
1 parent e707371 commit 9062fde

File tree

1 file changed

+68
-22
lines changed

1 file changed

+68
-22
lines changed

Cargo.toml

Lines changed: 68 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -28,38 +28,84 @@ resolver = "2"
2828
# and we don't rely on it for debugging that much
2929
debug = 0
3030

31-
# These speed up local tests
32-
[profile.dev.package.ethers-solc]
33-
opt-level = 3
31+
# Speed up tests and dev build
32+
[profile.dev.package]
33+
revm.opt-level = 3
34+
revm-primitives.opt-level = 3
35+
revm-interpreter.opt-level = 3
36+
revm-precompile.opt-level = 3
3437

35-
[profile.dev.package.revm]
36-
opt-level = 3
38+
ruint.opt-level = 3
39+
primitive-types.opt-level = 3
3740

38-
# These speed up all forge script related integration tests
39-
[profile.test.package.axum]
40-
opt-level = 3
41-
42-
# Local "release" mode, more optimized than dev but much faster to compile than release
43-
[profile.local]
44-
inherits = "dev"
45-
opt-level = 3
46-
# Set this to 1 or 2 to get more useful backtraces
47-
debug = 0
48-
panic = 'unwind'
49-
# better recompile times
50-
incremental = true
51-
codegen-units = 16
41+
axum.opt-level = 3
5242

5343
[profile.release]
54-
# Optimize for binary size, but keep loop vectorization
5544
opt-level = "s"
56-
# Performance optimizations
5745
lto = "fat"
58-
debug = 0
5946
strip = true
6047
panic = "abort"
6148
codegen-units = 1
6249

50+
[profile.release.package]
51+
# Optimize all non-workspace packages for speed
52+
"*".opt-level = 3
53+
54+
# Package overrides
55+
foundry-evm.opt-level = 3
56+
57+
ethers-solc.opt-level = 1
58+
foundry-abi.opt-level = 1
59+
mdbook.opt-level = 1
60+
protobuf.opt-level = 1
61+
rusoto_core.opt-level = 1
62+
rusoto_credential.opt-level = 1
63+
rusoto_kms.opt-level = 1
64+
toml_edit.opt-level = 1
65+
trezor-client.opt-level = 1
66+
67+
# Given that the `"*"` above takes precedence over the defaults for build scripts and macros, we
68+
# have to override all of them to reduce compile times
69+
syn.opt-level = 0
70+
prettyplease.opt-level = 0
71+
lalrpop.opt-level = 0
72+
73+
ethers-contract-abigen.opt-level = 0
74+
ethers-contract-abigen-derive.opt-level = 0
75+
async-recursion.opt-level = 0
76+
miette-derive.opt-level = 0
77+
strum_macros.opt-level = 0
78+
enumn.opt-level = 0
79+
clap_derive.opt-level = 0
80+
serde_derive.opt-level = 0
81+
pear_codegen.opt-level = 0
82+
num_enum_derive.opt-level = 0
83+
scale-info-derive.opt-level = 0
84+
parity-scale-codec-derive.opt-level = 0
85+
time-macros.opt-level = 0
86+
phf_macros.opt-level = 0
87+
pin-project-internal.opt-level = 0
88+
auto_impl.opt-level = 0
89+
derive_more.opt-level = 0
90+
rlp-derive.opt-level = 0
91+
impl-trait-for-tuples.opt-level = 0
92+
async-trait.opt-level = 0
93+
tokio-macros.opt-level = 0
94+
tracing-attributes.opt-level = 0
95+
futures-macro.opt-level = 0
96+
thiserror-impl.opt-level = 0
97+
wasm-bindgen-macro-support.opt-level = 0
98+
wasm-bindgen-backend.opt-level = 0
99+
100+
# Local "release" mode, more optimized than dev but much faster to compile than release
101+
[profile.local]
102+
inherits = "release"
103+
opt-level = 1
104+
lto = "none"
105+
codegen-units = 16
106+
# Empty, clears `profile.release.package`
107+
package = {}
108+
63109
[workspace.dependencies]
64110
ethers = { git = "https://github.com/gakonst/ethers-rs", default-features = false }
65111
ethers-addressbook = { git = "https://github.com/gakonst/ethers-rs", default-features = false }

0 commit comments

Comments
 (0)