@@ -29,26 +29,30 @@ fn main() {
2929``` rust
3030use benchkit :: prelude :: * ;
3131
32+ fn generate_random_vec (size : usize ) -> Vec <u32 > {
33+ (0 .. size ). map (| x | x as u32 ). collect ()
34+ }
35+
3236fn main () {
3337 let mut comparison = ComparativeAnalysis :: new (" sorting_algorithms" );
3438
3539 // Compare different sorting approaches
3640 for size in [100 , 1000 , 10000 ] {
3741 let data = generate_random_vec (size );
3842
39- comparison . add_variant (& format! (" std_sort_{}" , size ), {
43+ comparison = comparison . algorithm (& format! (" std_sort_{}" , size ), {
4044 let mut d = data . clone ();
41- move || d . sort ()
45+ move || { d . sort (); }
4246 });
4347
44- comparison . add_variant (& format! (" unstable_sort_{}" , size ), {
48+ comparison = comparison . algorithm (& format! (" unstable_sort_{}" , size ), {
4549 let mut d = data . clone ();
46- move || d . sort_unstable ()
50+ move || { d . sort_unstable (); }
4751 });
4852 }
4953
5054 let report = comparison . run ();
51- report . print_summary ( );
55+ println! ( " Fastest: {:?} " , report . fastest () );
5256}
5357```
5458
@@ -135,11 +139,22 @@ Perfect for ad-hoc performance analysis:
135139``` rust
136140use benchkit :: prelude :: * ;
137141
142+ fn old_algorithm (data : & [u32 ]) -> u32 {
143+ data . iter (). sum ()
144+ }
145+
146+ fn new_algorithm (data : & [u32 ]) -> u32 {
147+ data . iter (). fold (0 , | acc , x | acc + x )
148+ }
149+
150+ let data = vec! [1 , 2 , 3 , 4 , 5 ];
151+
138152// Quick check - is this optimization working?
139153let before = bench_once (|| old_algorithm (& data ));
140154let after = bench_once (|| new_algorithm (& data ));
141155
142- println! (" Improvement: {:.1}%" , before . compare (& after ). improvement ());
156+ let comparison = before . compare (& after );
157+ println! (" Improvement: {:.1}%" , comparison . improvement_percentage);
143158```
144159
145160### Pattern 2: Comprehensive Analysis
@@ -149,26 +164,38 @@ For thorough performance characterization:
149164``` rust
150165use benchkit :: prelude :: * ;
151166
167+ fn generate_test_data (size : usize ) -> Vec <u32 > {
168+ (0 .. size ). map (| x | x as u32 ). collect ()
169+ }
170+
171+ fn run_algorithm (algorithm : & str , data : & [u32 ]) -> u32 {
172+ match algorithm {
173+ " baseline" => data . iter (). sum (),
174+ " optimized" => data . iter (). fold (0 , | acc , x | acc + x ),
175+ " simd" => data . iter (). sum :: <u32 >(),
176+ _ => 0 ,
177+ }
178+ }
179+
152180fn analyze_performance () {
153181 let mut suite = BenchmarkSuite :: new (" comprehensive_analysis" );
154182
155183 // Test across multiple dimensions
156184 for size in [10 , 100 , 1000 , 10000 ] {
157185 for algorithm in [" baseline" , " optimized" , " simd" ] {
158186 let data = generate_test_data (size );
159- suite . benchmark (& format! (" {}_size_{}" , algorithm , size ), || {
160- run_algorithm (algorithm , & data )
187+ let alg = algorithm . to_string ();
188+ suite . benchmark (& format! (" {}_size_{}" , algorithm , size ), move || {
189+ run_algorithm (& alg , & data );
161190 });
162191 }
163192 }
164193
165194 let analysis = suite . run_analysis ();
166195
167196 // Generate comprehensive report
168- analysis . generate_report ()
169- . with_scaling_analysis ()
170- . with_recommendations ()
171- . save_markdown (" performance_analysis.md" );
197+ let report = analysis . generate_markdown_report ();
198+ println! (" {}" , report . generate ());
172199}
173200```
174201
0 commit comments