1- use iai :: { black_box, main} ;
1+ use iai_callgrind :: { black_box, main} ;
22
33use cairo_vm:: {
44 types:: program:: Program ,
@@ -12,6 +12,7 @@ use mimalloc::MiMalloc;
1212#[ global_allocator]
1313static ALLOC : MiMalloc = MiMalloc ;
1414
15+ #[ inline( never) ]
1516fn parse_program ( ) {
1617 //Picked the biggest one at the time of writing
1718 let program = include_bytes ! ( "../cairo_programs/benchmarks/keccak_integration_benchmark.json" ) ;
@@ -20,25 +21,39 @@ fn parse_program() {
2021 let _ = black_box ( program) ;
2122}
2223
23- fn build_many_runners ( ) {
24+ #[ export_name = "helper::parse_program" ]
25+ #[ inline( never) ]
26+ fn parse_program_helper ( ) -> Program {
2427 //Picked the biggest one at the time of writing
2528 let program = include_bytes ! ( "../cairo_programs/benchmarks/keccak_integration_benchmark.json" ) ;
26- let program = Program :: from_bytes ( program. as_slice ( ) , Some ( "main" ) ) . unwrap ( ) ;
27- for _ in 0 ..100 {
28- let runner = CairoRunner :: new ( black_box ( & program) , "starknet_with_keccak" , false ) . unwrap ( ) ;
29- let _ = black_box ( runner) ;
30- }
29+ Program :: from_bytes ( program. as_slice ( ) , Some ( "main" ) ) . unwrap ( )
3130}
3231
33- fn load_program_data ( ) {
32+ #[ inline( never) ]
33+ fn build_runner ( ) {
34+ let program = parse_program_helper ( ) ;
35+ let runner = CairoRunner :: new ( black_box ( & program) , "starknet_with_keccak" , false ) . unwrap ( ) ;
36+ let _ = black_box ( runner) ;
37+ }
38+
39+ #[ export_name = "helper::build_runner" ]
40+ #[ inline( never) ]
41+ fn build_runner_helper ( ) -> ( CairoRunner , VirtualMachine ) {
3442 //Picked the biggest one at the time of writing
3543 let program = include_bytes ! ( "../cairo_programs/benchmarks/keccak_integration_benchmark.json" ) ;
3644 let program = Program :: from_bytes ( program. as_slice ( ) , Some ( "main" ) ) . unwrap ( ) ;
37- for _ in 0 ..100 {
38- let mut runner = CairoRunner :: new ( & program, "starknet_with_keccak" , false ) . unwrap ( ) ;
39- let mut vm = VirtualMachine :: new ( false ) ;
40- _ = black_box ( runner. initialize ( black_box ( & mut vm) ) . unwrap ( ) ) ;
41- }
45+ let runner = CairoRunner :: new ( & program, "starknet_with_keccak" , false ) . unwrap ( ) ;
46+ let vm = VirtualMachine :: new ( false ) ;
47+ ( runner, vm)
48+ }
49+
50+ #[ inline( never) ]
51+ fn load_program_data ( ) {
52+ let ( mut runner, mut vm) = build_runner_helper ( ) ;
53+ _ = black_box ( runner. initialize ( black_box ( & mut vm) ) . unwrap ( ) ) ;
4254}
4355
44- main ! ( parse_program, build_many_runners, load_program_data) ;
56+ main ! (
57+ callgrind_args = "toggle-collect=helper::*" ;
58+ functions = parse_program, build_runner, load_program_data
59+ ) ;
0 commit comments