quantrs2_device/quantum_ml/
classical_integration.rs1use super::*;
6use serde::{Deserialize, Serialize};
7use std::collections::HashMap;
8
9pub struct PerformanceBenchmarkEngine {
11 device: Arc<RwLock<dyn QuantumDevice + Send + Sync>>,
12 config: QMLConfig,
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize)]
17pub struct PerformanceBenchmark {
18 pub model_type: QMLModelType,
19 pub problem_size: usize,
20 pub quantum_execution_time: std::time::Duration,
21 pub classical_execution_time: std::time::Duration,
22 pub quantum_accuracy: f64,
23 pub classical_accuracy: f64,
24 pub speedup_ratio: f64,
25 pub accuracy_improvement: f64,
26}
27
28impl PerformanceBenchmarkEngine {
29 pub fn new(
30 device: Arc<RwLock<dyn QuantumDevice + Send + Sync>>,
31 config: &QMLConfig,
32 ) -> DeviceResult<Self> {
33 Ok(Self {
34 device,
35 config: config.clone(),
36 })
37 }
38
39 pub async fn benchmark(
40 &self,
41 model_type: QMLModelType,
42 problem_size: usize,
43 ) -> DeviceResult<PerformanceBenchmark> {
44 let quantum_time = std::time::Duration::from_millis(100 * problem_size as u64);
46 let classical_time = std::time::Duration::from_millis(50 * problem_size as u64);
47
48 Ok(PerformanceBenchmark {
49 model_type,
50 problem_size,
51 quantum_execution_time: quantum_time,
52 classical_execution_time: classical_time,
53 quantum_accuracy: 0.92,
54 classical_accuracy: 0.88,
55 speedup_ratio: classical_time.as_millis() as f64 / quantum_time.as_millis() as f64,
56 accuracy_improvement: 0.04,
57 })
58 }
59}