MCPcopy Create free account
hub / github.com/erans/pgsqlite / benchmark_single_thread_baseline

Function benchmark_single_thread_baseline

tests/benchmark_baseline.rs:9–70  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

7 /// Simple baseline benchmark using direct DbHandler calls
8 #[tokio::test]
9 async fn benchmark_single_thread_baseline() {
10 eprintln!("\n=== Single Thread Baseline Benchmark ===");
11
12 let db_handler = Arc::new(DbHandler::new(":memory:").unwrap());
13
14 // Setup test data
15 db_handler.execute("
16 CREATE TABLE baseline_test (
17 id INTEGER PRIMARY KEY,
18 name TEXT,
19 value INTEGER
20 )
21 ").await.expect("Failed to create table");
22
23 for i in 0..1000 {
24 db_handler.execute(&format!(
25 "INSERT INTO baseline_test (id, name, value) VALUES ({}, 'name_{}', {})",
26 i, i, i * 10
27 )).await.expect("Failed to insert");
28 }
29
30 eprintln!("Data setup complete: 1,000 rows");
31
32 // Benchmark queries
33 let iterations = 100;
34 let mut query_times = Vec::new();
35
36 let start_time = Instant::now();
37
38 for i in 0..iterations {
39 let query_start = Instant::now();
40 let id = i % 1000;
41
42 let result = db_handler.query(
43 &format!("SELECT * FROM baseline_test WHERE id = {}", id)
44 ).await.expect("Query failed");
45
46 assert!(!result.rows.is_empty());
47 query_times.push(query_start.elapsed());
48 }
49
50 let total_duration = start_time.elapsed();
51 let qps = iterations as f64 / total_duration.as_secs_f64();
52
53 // Calculate statistics
54 query_times.sort();
55 let avg = query_times.iter().sum::<Duration>() / query_times.len() as u32;
56 let min = query_times[0];
57 let max = query_times[query_times.len() - 1];
58 let p50 = query_times[query_times.len() / 2];
59 let p95 = query_times[query_times.len() * 95 / 100];
60
61 eprintln!("\nDirect DbHandler Baseline Results:");
62 eprintln!(" Iterations: {}", iterations);
63 eprintln!(" Duration: {:.3}s", total_duration.as_secs_f64());
64 eprintln!(" QPS: {:.1}", qps);
65 eprintln!(" Latency (avg): {:.3}ms", avg.as_secs_f64() * 1000.0);
66 eprintln!(" Latency (min): {:.3}ms", min.as_secs_f64() * 1000.0);

Callers

nothing calls this directly

Calls 3

executeMethod · 0.45
queryMethod · 0.45
lenMethod · 0.45

Tested by

no test coverage detected