11use criterion:: { black_box, criterion_group, criterion_main, Criterion } ;
2+ use qc_model:: compact_trace:: CompactTraceEvent ;
23use qc_simulate:: baselines:: { GdsfPolicy , LruPolicy } ;
3- use qc_simulate:: engine:: TraceReplayEngine ;
4+ use qc_simulate:: compact_baselines:: CompactLruPolicy ;
5+ use qc_simulate:: engine:: { CompactReplayEconConfig , ReplayEconConfig , TraceReplayEngine } ;
46use qc_simulate:: synthetic:: { self , SyntheticConfig } ;
57
68fn generate_trace ( n : usize ) -> Vec < qc_model:: trace:: RequestTraceEvent > {
@@ -16,7 +18,7 @@ fn generate_trace(n: usize) -> Vec<qc_model::trace::RequestTraceEvent> {
1618fn bench_lru_replay_1m ( c : & mut Criterion ) {
1719 let events = generate_trace ( 1_000_000 ) ;
1820
19- c. bench_function ( "lru_replay_1m " , |b| {
21+ c. bench_function ( "lru_replay_1m_string " , |b| {
2022 b. iter ( || {
2123 let mut policy = LruPolicy :: new ( 50_000_000 ) ;
2224 let metrics = TraceReplayEngine :: replay ( black_box ( & events) , & mut policy) . unwrap ( ) ;
@@ -25,6 +27,26 @@ fn bench_lru_replay_1m(c: &mut Criterion) {
2527 } ) ;
2628}
2729
30+ fn bench_lru_replay_1m_compact ( c : & mut Criterion ) {
31+ let events = generate_trace ( 1_000_000 ) ;
32+ let ( compact_events, mut interner) = CompactTraceEvent :: intern_batch ( & events) ;
33+ let econ =
34+ CompactReplayEconConfig :: from_econ_config ( & ReplayEconConfig :: default ( ) , & mut interner) ;
35+
36+ c. bench_function ( "lru_replay_1m_compact" , |b| {
37+ b. iter ( || {
38+ let mut policy = CompactLruPolicy :: new ( 50_000_000 ) ;
39+ let metrics = TraceReplayEngine :: replay_compact_with_econ (
40+ black_box ( & compact_events) ,
41+ & mut policy,
42+ & econ,
43+ )
44+ . unwrap ( ) ;
45+ black_box ( metrics) ;
46+ } )
47+ } ) ;
48+ }
49+
2850fn bench_gdsf_replay_1m ( c : & mut Criterion ) {
2951 let events = generate_trace ( 1_000_000 ) ;
3052
@@ -37,5 +59,44 @@ fn bench_gdsf_replay_1m(c: &mut Criterion) {
3759 } ) ;
3860}
3961
40- criterion_group ! ( benches, bench_lru_replay_1m, bench_gdsf_replay_1m) ;
62+ fn bench_intern_batch_1m ( c : & mut Criterion ) {
63+ let events = generate_trace ( 1_000_000 ) ;
64+
65+ c. bench_function ( "intern_batch_1m" , |b| {
66+ b. iter ( || {
67+ let ( compact, interner) = CompactTraceEvent :: intern_batch ( black_box ( & events) ) ;
68+ black_box ( ( compact, interner) ) ;
69+ } )
70+ } ) ;
71+ }
72+
73+ fn bench_memory_comparison ( c : & mut Criterion ) {
74+ let events = generate_trace ( 100_000 ) ;
75+
76+ c. bench_function ( "memory_string_100k" , |b| {
77+ b. iter ( || {
78+ let e = events. clone ( ) ;
79+ black_box ( e. len ( ) ) ;
80+ } )
81+ } ) ;
82+
83+ let ( compact_events, interner) = CompactTraceEvent :: intern_batch ( & events) ;
84+
85+ c. bench_function ( "memory_compact_100k" , |b| {
86+ b. iter ( || {
87+ let e = compact_events. clone ( ) ;
88+ let i = interner. clone ( ) ;
89+ black_box ( ( e. len ( ) , i. len ( ) ) ) ;
90+ } )
91+ } ) ;
92+ }
93+
94+ criterion_group ! (
95+ benches,
96+ bench_lru_replay_1m,
97+ bench_lru_replay_1m_compact,
98+ bench_gdsf_replay_1m,
99+ bench_intern_batch_1m,
100+ bench_memory_comparison
101+ ) ;
41102criterion_main ! ( benches) ;
0 commit comments