1
- use std:: time:: Duration ;
1
+ use std:: { sync :: Arc , time:: Duration } ;
2
2
3
3
use criterion:: { criterion_group, criterion_main, BenchmarkId , Criterion , Throughput } ;
4
4
use matrix_sdk:: {
@@ -157,7 +157,6 @@ pub fn load_pinned_events_benchmark(c: &mut Criterion) {
157
157
. respond_with ( move |r : & Request | {
158
158
let segments: Vec < & str > = r. url . path_segments ( ) . expect ( "Invalid path" ) . collect ( ) ;
159
159
let event_id_str = segments[ 6 ] ;
160
- // let f = EventFactory::new().room(&room_id)
161
160
let event_id = EventId :: parse ( event_id_str) . expect ( "Invalid event id in response" ) ;
162
161
let event = f
163
162
. text_msg ( format ! ( "Message {event_id_str}" ) )
@@ -170,9 +169,6 @@ pub fn load_pinned_events_benchmark(c: &mut Criterion) {
170
169
} )
171
170
. mount ( & server) ,
172
171
) ;
173
- // runtime.block_on(server.reset());
174
-
175
- client. event_cache ( ) . subscribe ( ) . unwrap ( ) ;
176
172
177
173
let room = client. get_room ( & room_id) . expect ( "Room not found" ) ;
178
174
assert ! ( !room. pinned_event_ids( ) . is_empty( ) ) ;
@@ -184,6 +180,15 @@ pub fn load_pinned_events_benchmark(c: &mut Criterion) {
184
180
group. throughput ( Throughput :: Elements ( count as u64 ) ) ;
185
181
group. sample_size ( 10 ) ;
186
182
183
+ let client = Arc :: new ( client) ;
184
+
185
+ {
186
+ let client = client. clone ( ) ;
187
+ runtime. spawn_blocking ( move || {
188
+ client. event_cache ( ) . subscribe ( ) . unwrap ( ) ;
189
+ } ) ;
190
+ }
191
+
187
192
group. bench_function ( BenchmarkId :: new ( "load_pinned_events" , name) , |b| {
188
193
b. to_async ( & runtime) . iter ( || async {
189
194
assert ! ( !room. pinned_event_ids( ) . is_empty( ) ) ;
@@ -207,7 +212,6 @@ pub fn load_pinned_events_benchmark(c: &mut Criterion) {
207
212
{
208
213
let _guard = runtime. enter ( ) ;
209
214
runtime. block_on ( server. reset ( ) ) ;
210
- drop ( client) ;
211
215
drop ( server) ;
212
216
}
213
217
0 commit comments