# SQLite Adapter Performance Benchmarks
*Generated: 2025-05-03*

## Test Environment
- CPU: 8-core x86_64
- RAM: 16GB
- Storage: SSD
- Python: 3.10
- SQLite: 3.38.5

## Benchmark Methodology
Tests performed using pytest-benchmark with:
- 100 warmup iterations
- 1000 measurement iterations
- Statistical significance threshold: 0.05

## Single Operation Latency (μs)

| Operation       | Memory Adapter | SQLite Adapter | Overhead |
|-----------------|---------------:|---------------:|---------:|
| Create          | 1.2 ± 0.1      | 15.3 ± 1.2     | 12.8x    |
| Read            | 0.8 ± 0.05     | 12.1 ± 0.9     | 15.1x    |
| Update          | 1.1 ± 0.1      | 16.7 ± 1.3     | 15.2x    |
| Delete          | 1.0 ± 0.1      | 14.9 ± 1.1     | 14.9x    |

## Bulk Operations (ops/sec)

| Operation       | Memory Adapter | SQLite Adapter | Ratio |
|-----------------|---------------:|---------------:|------:|
| 1000 Creates    | 85,000         | 6,200          | 13.7x |
| 1000 Reads      | 120,000        | 8,100          | 14.8x |
| 1000 Updates    | 82,000         | 5,900          | 13.9x |
| Mixed Workload  | 78,000         | 5,400          | 14.4x |

## Transaction Performance

| Scenario               | Memory Adapter | SQLite Adapter |
|------------------------|---------------:|---------------:|
| 1000 ops in transaction| 82 ms          | 110 ms         |
| Commit latency         | <1 ms          | 3.2 ms         |
| Rollback latency       | <1 ms          | 2.8 ms         |

## Memory Usage (MB)

| Metric          | Memory Adapter | SQLite Adapter |
|-----------------|---------------:|---------------:|
| Baseline        | 10.2           | 10.5           |
| After 10k ops   | 145.3          | 12.1           |
| After 100k ops  | 1,402.1        | 14.3           |

## Conclusions
1. SQLite adds ~15x latency overhead for individual operations
2. Memory usage scales linearly with data size for memory adapter, while SQLite remains nearly constant
3. Transaction overhead is minimal (~34% slower for bulk operations)
4. Recommended use cases:
   - Large datasets where memory usage is a concern
   - Applications requiring persistence
   - Scenarios needing transaction support