From 6b95d704799dc7fd2dc6d838d704d441c08a92d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Kami=C5=84ski?= Date: Fri, 25 Oct 2024 12:18:48 +0200 Subject: [PATCH 1/3] Support --print-detailed-resources parameter --- extensions/scarb-cairo-run/src/main.rs | 40 ++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/extensions/scarb-cairo-run/src/main.rs b/extensions/scarb-cairo-run/src/main.rs index 250339434..c5ec9331d 100644 --- a/extensions/scarb-cairo-run/src/main.rs +++ b/extensions/scarb-cairo-run/src/main.rs @@ -43,6 +43,10 @@ struct Args { #[arg(long, default_value_t = false)] print_full_memory: bool, + /// Print detailed resources. + #[arg(long, default_value_t = false)] + print_detailed_resources: bool, + /// Do not rebuild the package. #[arg(long, default_value_t = false)] no_build: bool, @@ -150,6 +154,7 @@ fn main_inner(ui: &Ui, args: Args) -> Result<()> { result, print_full_memory: args.print_full_memory, gas_defined: available_gas.is_defined(), + detailed_resources: args.print_detailed_resources, }); Ok(()) @@ -228,6 +233,7 @@ struct Summary { result: RunResultStarknet, print_full_memory: bool, gas_defined: bool, + detailed_resources: bool } impl Message for Summary { @@ -272,6 +278,18 @@ impl Message for Summary { } println!("]"); } + + if self.detailed_resources { + let resources = self.result.used_resources.basic_resources; + let sorted_builtins = sort_by_value(&resources.builtin_instance_counter); + let sorted_syscalls = sort_by_value(&self.result.used_resources.syscalls); + + println!("Resources:"); + println!("\tsteps: {}", resources.n_steps); + println!("\tmemory holes: {}", resources.n_memory_holes); + println!("\tbuiltins: ({})", format_items(&sorted_builtins)); + println!("\tsyscalls: ({})", format_items(&sorted_syscalls)); + } } fn structured(self, _ser: S) -> Result @@ -282,6 +300,28 @@ impl Message for Summary { } } +fn sort_by_value<'a, K, V, M>(map: M) -> Vec<(&'a K, &'a V)> + where + M: IntoIterator, + V: Ord, +{ + let mut sorted: Vec<_> = map.into_iter().collect(); + sorted.sort_by(|a, b| b.1.cmp(a.1)); + sorted +} + +fn format_items(items: &[(K, V)]) -> String + where + K: std::fmt::Debug, + V: std::fmt::Display, +{ + items + .iter() + .map(|(key, value)| format!("{key:?}: {value}")) + .collect::>() + .join(", ") +} + enum GasLimit { Disabled, Unlimited, From ebd3e9caa7a4c9e8c6e167df20f3a0813e17fe4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Kami=C5=84ski?= Date: Fri, 25 Oct 2024 13:55:25 +0200 Subject: [PATCH 2/3] fmt --- extensions/scarb-cairo-run/src/main.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/extensions/scarb-cairo-run/src/main.rs b/extensions/scarb-cairo-run/src/main.rs index c5ec9331d..2081b17ca 100644 --- a/extensions/scarb-cairo-run/src/main.rs +++ b/extensions/scarb-cairo-run/src/main.rs @@ -233,7 +233,7 @@ struct Summary { result: RunResultStarknet, print_full_memory: bool, gas_defined: bool, - detailed_resources: bool + detailed_resources: bool, } impl Message for Summary { @@ -301,9 +301,9 @@ impl Message for Summary { } fn sort_by_value<'a, K, V, M>(map: M) -> Vec<(&'a K, &'a V)> - where - M: IntoIterator, - V: Ord, +where + M: IntoIterator, + V: Ord, { let mut sorted: Vec<_> = map.into_iter().collect(); sorted.sort_by(|a, b| b.1.cmp(a.1)); @@ -311,9 +311,9 @@ fn sort_by_value<'a, K, V, M>(map: M) -> Vec<(&'a K, &'a V)> } fn format_items(items: &[(K, V)]) -> String - where - K: std::fmt::Debug, - V: std::fmt::Display, +where + K: std::fmt::Debug, + V: std::fmt::Display, { items .iter() From 9fbd264e0e2e1daa5882a4aa9cc0ac13d3267202 Mon Sep 17 00:00:00 2001 From: maciektr Date: Mon, 28 Oct 2024 09:56:14 +0100 Subject: [PATCH 3/3] Apply suggestions from code review Signed-off-by: maciektr --- extensions/scarb-cairo-run/src/main.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/scarb-cairo-run/src/main.rs b/extensions/scarb-cairo-run/src/main.rs index 2081b17ca..4a935a593 100644 --- a/extensions/scarb-cairo-run/src/main.rs +++ b/extensions/scarb-cairo-run/src/main.rs @@ -45,7 +45,7 @@ struct Args { /// Print detailed resources. #[arg(long, default_value_t = false)] - print_detailed_resources: bool, + print_resource_usage: bool, /// Do not rebuild the package. #[arg(long, default_value_t = false)] @@ -154,7 +154,7 @@ fn main_inner(ui: &Ui, args: Args) -> Result<()> { result, print_full_memory: args.print_full_memory, gas_defined: available_gas.is_defined(), - detailed_resources: args.print_detailed_resources, + detailed_resources: args.print_resource_usage, }); Ok(())