From 29530196b177fdeb6c0aac9211381777206f2c86 Mon Sep 17 00:00:00 2001 From: Rodi-Can Bozman Date: Thu, 12 Sep 2024 16:46:10 +0200 Subject: [PATCH 1/3] Etherlink: enable LTO on release This should enhance the performance on the execution side but slow down the compilation a bit. --- etherlink/kernel_evm/Cargo.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/etherlink/kernel_evm/Cargo.toml b/etherlink/kernel_evm/Cargo.toml index a19731ec50d6..844b2b0e1975 100644 --- a/etherlink/kernel_evm/Cargo.toml +++ b/etherlink/kernel_evm/Cargo.toml @@ -92,3 +92,8 @@ alloy-sol-types = { version = "0.7.6", default-features = false, features = [ "json", ] } alloy-primitives = { version = "0.7.6", default-features = false } + +[profile.release] +# Will apply heavy LTO which attempts to perform optimizations across all crates +# within the dependency graph. +lto = true -- GitLab From 5d1704d084699840e446cac7dc8538daf6077825 Mon Sep 17 00:00:00 2001 From: Rodi-Can Bozman Date: Tue, 17 Sep 2024 16:13:07 +0200 Subject: [PATCH 2/3] Etherlink: never inline functions that are used by the benchmark --- etherlink/kernel_evm/evm_execution/src/fa_bridge/mod.rs | 1 + etherlink/kernel_evm/kernel/src/bridge.rs | 1 + etherlink/kernel_evm/kernel/src/inbox.rs | 3 +++ 3 files changed, 5 insertions(+) diff --git a/etherlink/kernel_evm/evm_execution/src/fa_bridge/mod.rs b/etherlink/kernel_evm/evm_execution/src/fa_bridge/mod.rs index cab05b268535..112097a75c90 100644 --- a/etherlink/kernel_evm/evm_execution/src/fa_bridge/mod.rs +++ b/etherlink/kernel_evm/evm_execution/src/fa_bridge/mod.rs @@ -116,6 +116,7 @@ macro_rules! create_outcome_error { /// other contract. Therefore we assume there is no open /// account storage transaction, and we can open one. #[allow(clippy::too_many_arguments)] +#[cfg_attr(feature = "benchmark", inline(never))] pub fn execute_fa_deposit<'a, Host: Runtime>( host: &'a mut Host, block: &'a BlockConstants, diff --git a/etherlink/kernel_evm/kernel/src/bridge.rs b/etherlink/kernel_evm/kernel/src/bridge.rs index 5f1bf96da0f3..0e89614407d9 100644 --- a/etherlink/kernel_evm/kernel/src/bridge.rs +++ b/etherlink/kernel_evm/kernel/src/bridge.rs @@ -59,6 +59,7 @@ pub struct Deposit { impl Deposit { /// Parses a deposit from a ticket transfer (internal inbox message). /// The "entrypoint" type is pair of ticket (FA2.1) and bytes (receiver address). + #[cfg_attr(feature = "benchmark", inline(never))] pub fn try_parse( ticket: FA2_1Ticket, receiver: MichelsonBytes, diff --git a/etherlink/kernel_evm/kernel/src/inbox.rs b/etherlink/kernel_evm/kernel/src/inbox.rs index ab2fb1be982f..e1a6369b971a 100644 --- a/etherlink/kernel_evm/kernel/src/inbox.rs +++ b/etherlink/kernel_evm/kernel/src/inbox.rs @@ -278,6 +278,7 @@ impl InputHandler for ProxyInput { Ok(()) } + #[cfg_attr(feature = "benchmark", inline(never))] fn handle_fa_deposit( host: &mut Host, fa_deposit: FaDeposit, @@ -379,6 +380,7 @@ impl InputHandler for SequencerInput { delayed_inbox.save_transaction(host, tx, previous_timestamp, level) } + #[cfg_attr(feature = "benchmark", inline(never))] fn handle_fa_deposit( host: &mut Host, fa_deposit: FaDeposit, @@ -456,6 +458,7 @@ fn handle_deposit( }) } +#[cfg_attr(feature = "benchmark", inline(never))] fn handle_fa_deposit( host: &mut Host, fa_deposit: FaDeposit, -- GitLab From 689bc8428982eb292e1833093f32cfcd16d091fd Mon Sep 17 00:00:00 2001 From: Rodi-Can Bozman Date: Wed, 18 Sep 2024 10:14:59 +0200 Subject: [PATCH 3/3] Etherlink: add a line in internal changelog --- etherlink/CHANGES_KERNEL.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/etherlink/CHANGES_KERNEL.md b/etherlink/CHANGES_KERNEL.md index bdd0a0434fb5..721cef60a14b 100644 --- a/etherlink/CHANGES_KERNEL.md +++ b/etherlink/CHANGES_KERNEL.md @@ -34,6 +34,8 @@ Beta and Testnet, and allows users to deposit and withdraw FA 2.1 tokens. benefits from the same implementation to read/write primitives. (!14735) - Adds a storage for account's code. Code are referenced by their code hash. (!14369) +- Enable LTO (Link Time Optimization) during compilation to reduce tick consumption + and improve execution speed. (!14933) ### Bug fixes -- GitLab