mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-20 13:24:44 +00:00
Improve compile time (#1989)
## Issue Addressed Closes #1264 ## Proposed Changes * Milagro BLS: tweak the feature flags so that Milagro doesn't get compiled if we're using BLST. Profiling showed that it was consuming about 1 minute of CPU time out of 60 minutes of CPU time (real time ~15 mins). A 1.6% saving. * Reduce monomorphization: compiling for 3 different `EthSpec` types causes a heck of a lot of generic functions to be instantiated (monomorphized). Removing 2 of 3 cuts the LLVM+linking step from around 250 seconds to 180 seconds, a saving of 70 seconds (real time!). This applies only to `make` and not the CI build, because we test with the minimal spec on CI. * Update `web3` crate to v0.13. This is perhaps the most controversial change, because it requires axing some deposit contract tools from `lcli`. I suspect these tools weren't used much anyway, and could be maintained separately, but I'm also happy to revert this change. However, it does save us a lot of compile time. With #1839, we now have 3 versions of Tokio (and all of Tokio's deps). This change brings us down to 2 versions, but 1 should be achievable once web3 (and reqwest) move to Tokio 0.3. * Remove `lcli` from the Docker image. It's a dev tool and can be built from the repo if required.
This commit is contained in:
@@ -38,8 +38,10 @@ fn main() {
|
||||
.long_version(
|
||||
format!(
|
||||
"{}\n\
|
||||
BLS Library: {}",
|
||||
VERSION.replace("Lighthouse/", ""), bls_library_name()
|
||||
BLS Library: {}\n\
|
||||
Specs: mainnet (true), minimal ({}), v0.12.3 ({})",
|
||||
VERSION.replace("Lighthouse/", ""), bls_library_name(),
|
||||
cfg!(feature = "spec-minimal"), cfg!(feature = "spec-v12"),
|
||||
).as_str()
|
||||
)
|
||||
.arg(
|
||||
@@ -151,11 +153,22 @@ fn main() {
|
||||
}
|
||||
|
||||
match eth_spec_id {
|
||||
EthSpecId::Minimal => run(EnvironmentBuilder::minimal(), &matches, testnet_config),
|
||||
EthSpecId::Mainnet => run(EnvironmentBuilder::mainnet(), &matches, testnet_config),
|
||||
#[cfg(feature = "spec-minimal")]
|
||||
EthSpecId::Minimal => run(EnvironmentBuilder::minimal(), &matches, testnet_config),
|
||||
#[cfg(feature = "spec-v12")]
|
||||
EthSpecId::V012Legacy => {
|
||||
run(EnvironmentBuilder::v012_legacy(), &matches, testnet_config)
|
||||
}
|
||||
#[cfg(any(not(feature = "spec-minimal"), not(feature = "spec-v12")))]
|
||||
other => {
|
||||
eprintln!(
|
||||
"Eth spec `{}` is not supported by this build of Lighthouse",
|
||||
other
|
||||
);
|
||||
eprintln!("You must compile with a feature flag to enable this spec variant");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user