Comprehensive SQLite performance benchmarking suite testing PRAGMA settings, WAL mode optimizations, and encryption performance across multiple Node.js versions.
Important
This benchmark suite was created to analyze Forward Email's production SQLite configuration and identify optimization opportunities. All tests are based on real-world email infrastructure requirements handling millions of messages.
This project benchmarks SQLite performance across different Node.js versions (v18, v20, v22, v24) with various PRAGMA configurations, focusing on:
- PRAGMA setting optimizations - Testing Forward Email's actual production settings
- WAL mode performance - Analyzing Write-Ahead Logging impact on throughput
- ChaCha20 encryption - Quantum-resistant encryption performance testing
- Encryption overhead analysis - Comparing better-sqlite3-multiple-ciphers vs better-sqlite3
- Cross-version compatibility - Node.js version performance comparison
- Production workload simulation - Insert/Select/Update operations mimicking email storage
Tip
Use Node.js v20 LTS for best performance. Other versions show significant performance regressions.
# Clone and setup
git clone <repository-url>
cd sqlite-benchmarks
npm install
# Run benchmarks
npm run benchmark
# View results
ls -la benchmark_results_*.jsonsqlite-benchmarks/
├── README.md # This documentation
├── LICENSE.md # MIT License
├── package.json # Dependencies and scripts
├── package-lock.json # Locked dependency versions
├── .gitignore # Git ignore patterns
├── benchmark.js # Main benchmark script
├── benchmark_results_node_v18.20.8.json # Node v18 results
├── benchmark_results_node_v20.19.5.json # Node v20 results (recommended)
├── benchmark_results_node_v22.21.1.json # Node v22 results
└── benchmark_results_node_v24.11.1.json # Node v24 results (avoid)
Caution
The better-sqlite3-multiple-ciphers package requires native compilation. You may need to rebuild when switching Node.js versions.
- better-sqlite3-multiple-ciphers - SQLite with ChaCha20 encryption support
- better-sqlite3 - Standard SQLite without encryption (for comparison)
- benchmark - Performance testing framework
- cli-table3 - Terminal table formatting
- fs-extra - Enhanced filesystem operations
Forward Email Production Config:
- Inserts: 10,548 ops/sec
- Selects: 17,494 ops/sec
- Updates: 16,654 ops/sec
Best Optimization (WAL Autocheckpoint 1000):
- Inserts: 11,800 ops/sec (+12% improvement)
- Selects: 18,383 ops/sec (+5% improvement)
- Updates: 22,087 ops/sec (+33% improvement)
Forward Email Production Config:
- Inserts: 10,658 ops/sec
- Selects: 14,466 ops/sec (-17% vs v20)
- Updates: 18,641 ops/sec
Note
Node v18 shows npm engine warnings but compiles and runs successfully. Performance is acceptable for legacy applications.
Forward Email Production Config:
- Inserts: 9,829 ops/sec (-7% vs v20)
- Selects: 15,833 ops/sec (-9% vs v20)
- Updates: 18,416 ops/sec
Forward Email Production Config:
- Inserts: 9,938 ops/sec
- Selects: 7,497 ops/sec (-57% vs v20)
- Updates: 10,446 ops/sec
Warning
Node.js v24 shows severe performance regressions for SQLite operations. Not recommended for production use.
The benchmark suite includes a comparison between better-sqlite3-multiple-ciphers (with ChaCha20 encryption) and standard better-sqlite3 (no encryption) to quantify the performance impact of encryption.
Note
The "better-sqlite3 (no encryption)" configuration uses the standard better-sqlite3 package without encryption, while all other configurations use better-sqlite3-multiple-ciphers with ChaCha20 encryption.
Typical Encryption Overhead (Node.js v20):
- Insert Operations: ~70-75% slower with ChaCha20 encryption
- Select Operations: ~45-50% slower with ChaCha20 encryption
- Update Operations: ~70-75% slower with ChaCha20 encryption
While encryption adds overhead, it provides quantum-resistant security for sensitive email data. The performance trade-off is acceptable for Forward Email's security requirements.
Last Updated: 2026-09-23
| Node Version | Library | Setup (ms) | Insert/sec | Select/sec | Update/sec | Delete/sec | DB Size (MB) |
|---|---|---|---|---|---|---|---|
| v18.20.4 | better-sqlite3-multiple-ciphers | 76.1 | 12,330 | 26,946 | 21,278 | 155,836 | 3.98 |
| v18.20.8 | better-sqlite3-multiple-ciphers | 95.2 | 10,165 | 13,345 | 18,056 | 85,244 | 3.98 |
| v20.19.5 | better-sqlite3-multiple-ciphers | 94.6 | 10,205 | 14,034 | 18,571 | 85,164 | 3.98 |
| v20.19.6 | better-sqlite3-multiple-ciphers | 92.6 | 10,629 | 14,382 | 18,952 | 89,759 | 3.98 |
| v20.20.0 | better-sqlite3-multiple-ciphers | 93.0 | 10,484 | 14,656 | 18,717 | 91,996 | 3.98 |
| v20.20.1 | better-sqlite3-multiple-ciphers | 96.0 | 9,782 | 13,206 | 17,317 | 70,492 | 3.98 |
| v20.20.2 | better-sqlite3-multiple-ciphers | 95.1 | 10,017 | 13,476 | 18,027 | 90,490 | 3.98 |
| v22.13.0 | better-sqlite3-multiple-ciphers | 86.7 | 12,778 | 19,765 | 23,104 | 134,608 | 3.98 |
| v22.21.1 | better-sqlite3-multiple-ciphers | 103.1 | 10,389 | 16,285 | 20,021 | 100,644 | 3.98 |
| v22.22.0 | better-sqlite3-multiple-ciphers | 94.8 | 10,099 | 32,997 | 18,502 | 87,329 | 3.98 |
| v22.22.1 | better-sqlite3-multiple-ciphers | 96.3 | 9,979 | 33,954 | 17,922 | 77,979 | 3.98 |
| v22.22.2 | better-sqlite3-multiple-ciphers | 97.1 | 10,429 | 33,201 | 18,860 | 92,593 | 3.98 |
| v22.22.3 | better-sqlite3-multiple-ciphers | 97.7 | 9,338 | 33,819 | 16,310 | 77,948 | 3.98 |
| v22.23.0 | better-sqlite3-multiple-ciphers | 96.0 | 10,286 | 33,644 | 18,660 | 88,881 | 3.98 |
| v22.23.1 | better-sqlite3-multiple-ciphers | 108.0 | 11,404 | 43,414 | 20,635 | 94,554 | 3.98 |
| v22.23.2 | better-sqlite3-multiple-ciphers | 100.4 | 8,999 | 36,817 | 15,636 | 69,730 | 3.98 |
| v24.11.1 | better-sqlite3-multiple-ciphers | 106.8 | 9,385 | 10,502 | 15,585 | 79,170 | 3.98 |
| v24.12.0 | better-sqlite3-multiple-ciphers | 97.7 | 9,905 | 32,380 | 18,792 | 75,216 | 3.98 |
| v24.13.0 | better-sqlite3-multiple-ciphers | 101.0 | 8,726 | 33,371 | 15,310 | 67,056 | 3.98 |
| v24.13.1 | better-sqlite3-multiple-ciphers | 96.0 | 10,090 | 33,673 | 18,396 | 81,813 | 3.98 |
| v24.14.0 | better-sqlite3-multiple-ciphers | 95.7 | 10,156 | 33,729 | 18,678 | 88,098 | 3.98 |
| v24.14.1 | better-sqlite3-multiple-ciphers | 94.6 | 10,330 | 33,118 | 18,649 | 80,496 | 3.98 |
| v24.15.0 | better-sqlite3-multiple-ciphers | 100.1 | 10,076 | 18,463 | 16,979 | 83,459 | 3.98 |
| v24.16.0 | better-sqlite3-multiple-ciphers | 97.3 | 10,144 | 32,437 | 18,308 | 85,237 | 3.98 |
| v24.17.0 | better-sqlite3-multiple-ciphers | 95.5 | 11,406 | 34,700 | 22,290 | 129,955 | 3.98 |
| v24.18.0 | better-sqlite3-multiple-ciphers | 100.9 | 9,754 | 32,820 | 17,880 | 72,166 | 3.98 |
| v24.19.0 | better-sqlite3-multiple-ciphers | 100.0 | 8,906 | 31,225 | 15,889 | 77,107 | 3.98 |
| v24.20.0 | better-sqlite3-multiple-ciphers | 76.8 | 14,949 | 55,028 | 29,533 | 155,183 | 3.98 |
| v24.21.0 | better-sqlite3-multiple-ciphers | 92.2 | 10,082 | 25,196 | 18,059 | 72,543 | 3.98 |
| v25.2.0 | better-sqlite3-multiple-ciphers | 97.8 | 9,848 | 15,344 | 18,032 | 87,176 | 3.98 |
| v25.2.1 | better-sqlite3-multiple-ciphers | 97.0 | 10,043 | 32,479 | 18,239 | 92,764 | 3.98 |
| v25.3.0 | better-sqlite3-multiple-ciphers | 96.1 | 9,684 | 33,121 | 18,216 | 85,970 | 3.98 |
| v25.4.0 | better-sqlite3-multiple-ciphers | 98.1 | 9,819 | 32,430 | 18,170 | 82,088 | 3.98 |
| v25.5.0 | better-sqlite3-multiple-ciphers | 96.5 | 10,104 | 32,166 | 18,306 | 89,598 | 3.98 |
| v25.6.0 | better-sqlite3-multiple-ciphers | 96.3 | 10,019 | 32,295 | 18,266 | 93,371 | 3.98 |
| v25.6.1 | better-sqlite3-multiple-ciphers | 94.6 | 9,980 | 32,806 | 17,656 | 80,691 | 3.98 |
| v25.7.0 | better-sqlite3-multiple-ciphers | 94.1 | 9,962 | 32,491 | 18,106 | 91,659 | 3.98 |
| v25.8.0 | better-sqlite3-multiple-ciphers | 98.6 | 9,245 | 31,633 | 16,685 | 75,786 | 3.98 |
| v25.8.1 | better-sqlite3-multiple-ciphers | 98.9 | 9,703 | 32,236 | 17,462 | 79,340 | 3.98 |
| v25.8.2 | better-sqlite3-multiple-ciphers | 97.5 | 9,568 | 31,016 | 16,918 | 76,546 | 3.98 |
| v25.9.0 | better-sqlite3-multiple-ciphers | 96.7 | 10,001 | 18,648 | 16,464 | 78,284 | 3.98 |
| v26.0.0 | better-sqlite3-multiple-ciphers | 93.6 | 10,173 | 33,158 | 18,361 | 96,628 | 3.98 |
| v26.1.0 | better-sqlite3-multiple-ciphers | 93.9 | 10,118 | 33,265 | 18,303 | 93,809 | 3.98 |
| v26.10.0 | better-sqlite3-multiple-ciphers | 97.3 | 9,492 | 30,203 | 17,672 | 71,602 | 3.98 |
| v26.2.0 | better-sqlite3-multiple-ciphers | 94.4 | 10,015 | 32,959 | 17,973 | 89,759 | 3.98 |
| v26.3.0 | better-sqlite3-multiple-ciphers | 93.9 | 10,189 | 33,336 | 17,844 | 86,723 | 3.98 |
| v26.3.1 | better-sqlite3-multiple-ciphers | 95.8 | 9,398 | 35,282 | 16,296 | 87,123 | 3.98 |
| v26.4.0 | better-sqlite3-multiple-ciphers | 94.7 | 10,095 | 33,115 | 18,465 | 89,518 | 3.98 |
| v26.5.0 | better-sqlite3-multiple-ciphers | 97.1 | 9,133 | 34,620 | 15,874 | 85,201 | 3.98 |
| v26.5.1 | better-sqlite3-multiple-ciphers | 95.9 | 10,093 | 33,644 | 18,270 | 90,009 | 3.98 |
| v26.6.0 | better-sqlite3-multiple-ciphers | 97.6 | 9,099 | 34,703 | 15,839 | 82,727 | 3.98 |
| v26.7.0 | better-sqlite3-multiple-ciphers | 98.3 | 9,991 | 33,160 | 17,886 | 72,854 | 3.98 |
| v26.8.1 | better-sqlite3-multiple-ciphers | 110.3 | 12,528 | 42,471 | 23,256 | 109,493 | 3.98 |
| v26.8.2 | better-sqlite3-multiple-ciphers | 107.6 | 10,829 | 38,761 | 21,174 | 125,219 | 3.98 |
| v26.9.0 | better-sqlite3-multiple-ciphers | 100.0 | 8,911 | 32,419 | 15,846 | 75,477 | 3.98 |
| Node Version | Library | Setup (ms) | Insert/sec | Select/sec | Update/sec | Delete/sec | DB Size (MB) |
|---|---|---|---|---|---|---|---|
| v18.20.4 | better-sqlite3-multiple-ciphers | 238.6 | 11,778 | 26,632 | 21,163 | 124,347 | 3.98 |
| v18.20.8 | better-sqlite3-multiple-ciphers | 119.8 | 9,519 | 13,222 | 17,926 | 56,648 | 3.98 |
| v20.19.5 | better-sqlite3-multiple-ciphers | 125.4 | 9,730 | 14,221 | 18,455 | 58,439 | 3.98 |
| v20.19.6 | better-sqlite3-multiple-ciphers | 120.1 | 9,804 | 14,157 | 18,802 | 56,076 | 3.98 |
| v20.20.0 | better-sqlite3-multiple-ciphers | 116.8 | 9,654 | 14,120 | 18,507 | 55,916 | 3.98 |
| v20.20.1 | better-sqlite3-multiple-ciphers | 124.4 | 9,472 | 13,121 | 17,377 | 46,970 | 3.98 |
| v20.20.2 | better-sqlite3-multiple-ciphers | 106.4 | 9,566 | 13,997 | 17,596 | 55,857 | 3.98 |
| v22.13.0 | better-sqlite3-multiple-ciphers | 108.4 | 12,022 | 19,187 | 22,204 | 87,466 | 3.98 |
| v22.21.1 | better-sqlite3-multiple-ciphers | 125.8 | 9,829 | 15,833 | 18,416 | 8,120 | 3.98 |
| v22.22.0 | better-sqlite3-multiple-ciphers | 128.1 | 9,563 | 31,392 | 18,263 | 49,461 | 3.98 |
| v22.22.1 | better-sqlite3-multiple-ciphers | 147.7 | 9,441 | 32,535 | 17,871 | 56,456 | 3.98 |
| v22.22.2 | better-sqlite3-multiple-ciphers | 109.0 | 9,837 | 30,757 | 17,950 | 60,898 | 3.98 |
| v22.22.3 | better-sqlite3-multiple-ciphers | 139.5 | 9,057 | 32,465 | 16,283 | 60,887 | 3.98 |
| v22.23.0 | better-sqlite3-multiple-ciphers | 174.5 | 9,793 | 32,224 | 18,635 | 55,267 | 3.98 |
| v22.23.1 | better-sqlite3-multiple-ciphers | 137.6 | 8,816 | 41,595 | 19,890 | 68,866 | 3.98 |
| v22.23.2 | better-sqlite3-multiple-ciphers | 120.0 | 8,502 | 35,069 | 15,429 | 49,950 | 3.98 |
| v24.11.1 | better-sqlite3-multiple-ciphers | 123.6 | 9,938 | 7,497 | 10,446 | 66,203 | 3.98 |
| v24.12.0 | better-sqlite3-multiple-ciphers | 121.6 | 9,404 | 31,049 | 12,056 | 34,265 | 3.98 |
| v24.13.0 | better-sqlite3-multiple-ciphers | 116.2 | 8,330 | 31,653 | 15,229 | 53,740 | 3.98 |
| v24.13.1 | better-sqlite3-multiple-ciphers | 115.6 | 9,304 | 31,639 | 17,726 | 53,981 | 3.98 |
| v24.14.0 | better-sqlite3-multiple-ciphers | 125.6 | 8,439 | 32,050 | 18,529 | 59,203 | 3.98 |
| v24.14.1 | better-sqlite3-multiple-ciphers | 110.4 | 9,472 | 32,074 | 17,922 | 58,959 | 3.98 |
| v24.15.0 | better-sqlite3-multiple-ciphers | 114.6 | 9,499 | 31,047 | 18,538 | 58,921 | 3.98 |
| v24.16.0 | better-sqlite3-multiple-ciphers | 113.3 | 9,502 | 30,158 | 18,649 | 60,790 | 3.98 |
| v24.17.0 | better-sqlite3-multiple-ciphers | 108.4 | 10,339 | 29,376 | 22,158 | 81,202 | 3.98 |
| v24.18.0 | better-sqlite3-multiple-ciphers | 216.0 | 9,361 | 31,559 | 17,386 | 34,560 | 3.98 |
| v24.19.0 | better-sqlite3-multiple-ciphers | 127.2 | 8,854 | 34,986 | 15,587 | 53,856 | 3.98 |
| v24.20.0 | better-sqlite3-multiple-ciphers | 557.2 | 14,354 | 45,391 | 29,086 | 122,294 | 3.98 |
| v24.21.0 | better-sqlite3-multiple-ciphers | 117.6 | 9,537 | 33,019 | 17,461 | 53,005 | 3.98 |
| v25.2.0 | better-sqlite3-multiple-ciphers | 113.1 | 9,032 | 15,189 | 17,763 | 53,723 | 3.98 |
| v25.2.1 | better-sqlite3-multiple-ciphers | 113.6 | 9,572 | 31,101 | 18,170 | 61,312 | 3.98 |
| v25.3.0 | better-sqlite3-multiple-ciphers | 124.4 | 9,200 | 30,847 | 18,005 | 60,938 | 3.98 |
| v25.4.0 | better-sqlite3-multiple-ciphers | 124.2 | 9,419 | 31,216 | 18,109 | 59,556 | 3.98 |
| v25.5.0 | better-sqlite3-multiple-ciphers | 109.8 | 9,427 | 31,158 | 18,219 | 59,449 | 3.98 |
| v25.6.0 | better-sqlite3-multiple-ciphers | 111.9 | 8,686 | 30,717 | 17,958 | 63,016 | 3.98 |
| v25.6.1 | better-sqlite3-multiple-ciphers | 108.2 | 9,191 | 31,509 | 17,953 | 55,577 | 3.98 |
| v25.7.0 | better-sqlite3-multiple-ciphers | 106.0 | 9,316 | 30,891 | 18,215 | 62,539 | 3.98 |
| v25.8.0 | better-sqlite3-multiple-ciphers | 115.6 | 8,354 | 29,954 | 16,803 | 44,980 | 3.98 |
| v25.8.1 | better-sqlite3-multiple-ciphers | 111.8 | 8,958 | 29,635 | 17,205 | 52,837 | 3.98 |
| v25.8.2 | better-sqlite3-multiple-ciphers | 110.9 | 8,865 | 29,156 | 16,807 | 51,717 | 3.98 |
| v25.9.0 | better-sqlite3-multiple-ciphers | 128.3 | 9,611 | 31,000 | 18,099 | 60,020 | 3.98 |
| v26.0.0 | better-sqlite3-multiple-ciphers | 108.6 | 9,543 | 32,731 | 18,137 | 61,648 | 3.98 |
| v26.1.0 | better-sqlite3-multiple-ciphers | 107.2 | 9,168 | 32,095 | 18,262 | 61,881 | 3.98 |
| v26.10.0 | better-sqlite3-multiple-ciphers | 120.5 | 9,496 | 32,360 | 16,737 | 53,177 | 3.98 |
| v26.2.0 | better-sqlite3-multiple-ciphers | 107.6 | 9,061 | 31,918 | 18,268 | 60,386 | 3.98 |
| v26.3.0 | better-sqlite3-multiple-ciphers | 108.0 | 9,582 | 31,537 | 18,179 | 48,761 | 3.98 |
| v26.3.1 | better-sqlite3-multiple-ciphers | 111.2 | 8,880 | 33,973 | 16,087 | 59,930 | 3.98 |
| v26.4.0 | better-sqlite3-multiple-ciphers | 109.7 | 9,327 | 31,417 | 18,183 | 55,512 | 3.98 |
| v26.5.0 | better-sqlite3-multiple-ciphers | 112.0 | 8,630 | 33,259 | 15,583 | 60,190 | 3.98 |
| v26.5.1 | better-sqlite3-multiple-ciphers | 110.8 | 9,475 | 32,606 | 17,969 | 57,330 | 3.98 |
| v26.6.0 | better-sqlite3-multiple-ciphers | 123.3 | 8,675 | 33,286 | 15,668 | 59,898 | 3.98 |
| v26.7.0 | better-sqlite3-multiple-ciphers | 112.9 | 9,322 | 31,949 | 15,858 | 33,549 | 3.98 |
| v26.8.1 | better-sqlite3-multiple-ciphers | 222.3 | 11,932 | 38,501 | 22,809 | 98,649 | 3.98 |
| v26.8.2 | better-sqlite3-multiple-ciphers | 209.8 | 11,096 | 40,189 | 21,343 | 94,242 | 3.98 |
| v26.9.0 | better-sqlite3-multiple-ciphers | 117.3 | 8,849 | 35,952 | 15,745 | 53,943 | 3.98 |
| Node Version | Library | Setup (ms) | Insert/sec | Select/sec | Update/sec | Delete/sec | DB Size (MB) |
|---|---|---|---|---|---|---|---|
| v18.20.4 | better-sqlite3-multiple-ciphers | 78.2 | 12,034 | 27,226 | 21,070 | 108,601 | 4.13 |
| v18.20.8 | better-sqlite3-multiple-ciphers | 95.1 | 10,227 | 13,380 | 18,095 | 82,352 | 4.13 |
| v20.19.5 | better-sqlite3-multiple-ciphers | 96.8 | 10,245 | 14,462 | 18,323 | 86,565 | 4.13 |
| v20.19.6 | better-sqlite3-multiple-ciphers | 95.5 | 10,401 | 13,977 | 18,924 | 85,977 | 4.13 |
| v20.20.0 | better-sqlite3-multiple-ciphers | 96.2 | 10,014 | 13,748 | 18,617 | 82,021 | 4.13 |
| v20.20.1 | better-sqlite3-multiple-ciphers | 100.0 | 9,636 | 12,707 | 17,313 | 73,073 | 4.13 |
| v20.20.2 | better-sqlite3-multiple-ciphers | 96.5 | 9,563 | 13,941 | 18,092 | 89,039 | 4.13 |
| v22.13.0 | better-sqlite3-multiple-ciphers | 91.1 | 12,533 | 19,258 | 22,819 | 136,724 | 4.13 |
| v22.21.1 | better-sqlite3-multiple-ciphers | 97.5 | 10,690 | 13,274 | 19,033 | 91,988 | 4.13 |
| v22.22.0 | better-sqlite3-multiple-ciphers | 103.1 | 5,057 | 31,660 | 18,396 | 83,808 | 4.13 |
| v22.22.1 | better-sqlite3-multiple-ciphers | 94.7 | 10,045 | 32,928 | 17,678 | 77,250 | 4.13 |
| v22.22.2 | better-sqlite3-multiple-ciphers | 94.6 | 10,389 | 33,014 | 18,592 | 93,023 | 4.13 |
| v22.22.3 | better-sqlite3-multiple-ciphers | 98.2 | 9,296 | 33,138 | 16,253 | 81,440 | 4.13 |
| v22.23.0 | better-sqlite3-multiple-ciphers | 100.7 | 10,269 | 32,501 | 18,341 | 84,019 | 4.13 |
| v22.23.1 | better-sqlite3-multiple-ciphers | 122.6 | 11,654 | 42,932 | 20,664 | 100,351 | 4.13 |
| v22.23.2 | better-sqlite3-multiple-ciphers | 99.9 | 8,983 | 37,115 | 15,655 | 68,018 | 4.13 |
| v24.11.1 | better-sqlite3-multiple-ciphers | 96.9 | 10,628 | 16,821 | 19,934 | 117,509 | 4.13 |
| v24.12.0 | better-sqlite3-multiple-ciphers | 100.1 | 9,943 | 33,441 | 18,635 | 82,974 | 4.13 |
| v24.13.0 | better-sqlite3-multiple-ciphers | 101.0 | 8,781 | 31,898 | 15,264 | 67,783 | 4.13 |
| v24.13.1 | better-sqlite3-multiple-ciphers | 89.3 | 10,316 | 33,607 | 17,886 | 77,616 | 4.13 |
| v24.14.0 | better-sqlite3-multiple-ciphers | 95.2 | 10,190 | 31,553 | 18,551 | 88,723 | 4.13 |
| v24.14.1 | better-sqlite3-multiple-ciphers | 97.2 | 10,073 | 25,664 | 18,650 | 78,046 | 4.13 |
| v24.15.0 | better-sqlite3-multiple-ciphers | 100.0 | 10,146 | 30,463 | 18,276 | 90,001 | 4.13 |
| v24.16.0 | better-sqlite3-multiple-ciphers | 104.0 | 10,030 | 24,794 | 18,507 | 79,974 | 4.13 |
| v24.17.0 | better-sqlite3-multiple-ciphers | 97.4 | 10,917 | 23,776 | 22,223 | 123,854 | 4.13 |
| v24.18.0 | better-sqlite3-multiple-ciphers | 95.6 | 9,741 | 32,001 | 17,683 | 65,972 | 4.13 |
| v24.19.0 | better-sqlite3-multiple-ciphers | 97.4 | 9,178 | 36,112 | 15,697 | 67,150 | 4.13 |
| v24.20.0 | better-sqlite3-multiple-ciphers | 145.0 | 13,318 | 53,567 | 29,178 | 155,328 | 4.13 |
| v24.21.0 | better-sqlite3-multiple-ciphers | 94.2 | 9,989 | 30,957 | 17,052 | 69,507 | 4.13 |
| v25.2.0 | better-sqlite3-multiple-ciphers | 100.6 | 9,695 | 13,826 | 17,858 | 86,573 | 4.13 |
| v25.2.1 | better-sqlite3-multiple-ciphers | 96.3 | 9,982 | 30,632 | 18,263 | 91,066 | 4.13 |
| v25.3.0 | better-sqlite3-multiple-ciphers | 98.4 | 9,766 | 32,600 | 17,687 | 85,455 | 4.13 |
| v25.4.0 | better-sqlite3-multiple-ciphers | 97.8 | 9,659 | 32,272 | 18,023 | 86,118 | 4.13 |
| v25.5.0 | better-sqlite3-multiple-ciphers | 98.1 | 9,873 | 30,621 | 18,235 | 87,329 | 4.13 |
| v25.6.0 | better-sqlite3-multiple-ciphers | 98.9 | 9,811 | 31,995 | 18,176 | 89,678 | 4.13 |
| v25.6.1 | better-sqlite3-multiple-ciphers | 93.6 | 9,930 | 30,949 | 17,833 | 87,474 | 4.13 |
| v25.7.0 | better-sqlite3-multiple-ciphers | 94.9 | 9,863 | 31,674 | 18,115 | 92,937 | 4.13 |
| v25.8.0 | better-sqlite3-multiple-ciphers | 102.8 | 9,477 | 30,740 | 16,583 | 72,748 | 4.13 |
| v25.8.1 | better-sqlite3-multiple-ciphers | 95.8 | 9,732 | 31,851 | 17,150 | 79,283 | 4.13 |
| v25.8.2 | better-sqlite3-multiple-ciphers | 97.2 | 9,550 | 30,370 | 16,844 | 79,472 | 4.13 |
| v25.9.0 | better-sqlite3-multiple-ciphers | 96.6 | 10,177 | 30,697 | 18,191 | 87,321 | 4.13 |
| v26.0.0 | better-sqlite3-multiple-ciphers | 96.4 | 9,951 | 25,426 | 17,855 | 89,678 | 4.13 |
| v26.1.0 | better-sqlite3-multiple-ciphers | 95.1 | 10,002 | 24,161 | 18,021 | 90,408 | 4.13 |
| v26.10.0 | better-sqlite3-multiple-ciphers | 94.1 | 9,922 | 34,576 | 17,422 | 23,765 | 4.13 |
| v26.2.0 | better-sqlite3-multiple-ciphers | 97.3 | 8,207 | 23,709 | 17,997 | 88,331 | 4.13 |
| v26.3.0 | better-sqlite3-multiple-ciphers | 94.5 | 10,236 | 32,938 | 18,379 | 83,591 | 4.13 |
| v26.3.1 | better-sqlite3-multiple-ciphers | 96.9 | 9,181 | 32,889 | 16,094 | 84,189 | 4.13 |
| v26.4.0 | better-sqlite3-multiple-ciphers | 94.7 | 10,062 | 32,646 | 18,434 | 88,176 | 4.13 |
| v26.5.0 | better-sqlite3-multiple-ciphers | 97.5 | 9,101 | 33,801 | 15,768 | 82,386 | 4.13 |
| v26.5.1 | better-sqlite3-multiple-ciphers | 95.1 | 10,015 | 31,307 | 18,195 | 84,161 | 4.13 |
| v26.6.0 | better-sqlite3-multiple-ciphers | 96.4 | 9,146 | 32,924 | 15,801 | 79,688 | 4.13 |
| v26.7.0 | better-sqlite3-multiple-ciphers | 96.0 | 9,673 | 30,998 | 17,632 | 75,386 | 4.13 |
| v26.8.1 | better-sqlite3-multiple-ciphers | 190.0 | 11,578 | 45,112 | 23,054 | 119,432 | 4.13 |
| v26.8.2 | better-sqlite3-multiple-ciphers | 113.7 | 11,649 | 39,014 | 20,725 | 126,807 | 4.13 |
| v26.9.0 | better-sqlite3-multiple-ciphers | 96.8 | 9,141 | 37,324 | 15,679 | 68,484 | 4.13 |
| Node Version | Library | Setup (ms) | Insert/sec | Select/sec | Update/sec | Delete/sec | DB Size (MB) |
|---|---|---|---|---|---|---|---|
| v18.20.4 | better-sqlite3-multiple-ciphers | 74.5 | 12,234 | 27,098 | 21,195 | 165,508 | 3.98 |
| v18.20.8 | better-sqlite3-multiple-ciphers | 94.9 | 10,133 | 13,350 | 17,369 | 82,898 | 3.98 |
| v20.19.5 | better-sqlite3-multiple-ciphers | 94.7 | 10,281 | 14,520 | 18,537 | 82,420 | 3.98 |
| v20.19.6 | better-sqlite3-multiple-ciphers | 93.0 | 10,409 | 14,467 | 18,645 | 87,866 | 3.98 |
| v20.20.0 | better-sqlite3-multiple-ciphers | 92.5 | 10,330 | 14,672 | 18,086 | 90,245 | 3.98 |
| v20.20.1 | better-sqlite3-multiple-ciphers | 95.8 | 8,074 | 13,123 | 17,359 | 72,280 | 3.98 |
| v20.20.2 | better-sqlite3-multiple-ciphers | 93.7 | 10,038 | 13,062 | 17,969 | 90,326 | 3.98 |
| v22.13.0 | better-sqlite3-multiple-ciphers | 85.6 | 12,666 | 20,391 | 23,226 | 123,609 | 3.98 |
| v22.21.1 | better-sqlite3-multiple-ciphers | 95.9 | 10,920 | 17,413 | 20,731 | 119,531 | 3.98 |
| v22.22.0 | better-sqlite3-multiple-ciphers | 97.3 | 10,140 | 33,103 | 18,477 | 86,192 | 3.98 |
| v22.22.1 | better-sqlite3-multiple-ciphers | 95.6 | 10,057 | 27,417 | 17,742 | 77,616 | 3.98 |
| v22.22.2 | better-sqlite3-multiple-ciphers | 96.1 | 10,294 | 33,189 | 18,748 | 90,572 | 3.98 |
| v22.22.3 | better-sqlite3-multiple-ciphers | 103.4 | 9,130 | 32,190 | 16,299 | 75,873 | 3.98 |
| v22.23.0 | better-sqlite3-multiple-ciphers | 95.0 | 10,354 | 33,295 | 18,727 | 89,358 | 3.98 |
| v22.23.1 | better-sqlite3-multiple-ciphers | 107.2 | 11,664 | 40,204 | 20,424 | 98,668 | 3.98 |
| v22.23.2 | better-sqlite3-multiple-ciphers | 104.6 | 8,950 | 36,939 | 15,573 | 63,315 | 3.98 |
| v24.11.1 | better-sqlite3-multiple-ciphers | 107.2 | 9,419 | 13,363 | 19,434 | 94,153 | 3.98 |
| v24.12.0 | better-sqlite3-multiple-ciphers | 98.5 | 10,218 | 34,443 | 18,783 | 88,960 | 3.98 |
| v24.13.0 | better-sqlite3-multiple-ciphers | 101.6 | 8,810 | 33,779 | 15,360 | 69,920 | 3.98 |
| v24.13.1 | better-sqlite3-multiple-ciphers | 90.9 | 10,539 | 34,798 | 18,977 | 86,274 | 3.98 |
| v24.14.0 | better-sqlite3-multiple-ciphers | 95.7 | 10,117 | 28,592 | 18,295 | 91,575 | 3.98 |
| v24.14.1 | better-sqlite3-multiple-ciphers | 94.0 | 10,353 | 33,092 | 18,631 | 88,960 | 3.98 |
| v24.15.0 | better-sqlite3-multiple-ciphers | 95.8 | 9,581 | 25,340 | 18,675 | 87,943 | 3.98 |
| v24.16.0 | better-sqlite3-multiple-ciphers | 96.3 | 10,076 | 32,426 | 18,275 | 83,319 | 3.98 |
| v24.17.0 | better-sqlite3-multiple-ciphers | 94.7 | 11,703 | 34,528 | 22,032 | 45,155 | 3.98 |
| v24.18.0 | better-sqlite3-multiple-ciphers | 96.4 | 9,576 | 30,678 | 17,823 | 70,992 | 3.98 |
| v24.19.0 | better-sqlite3-multiple-ciphers | 97.5 | 9,148 | 31,726 | 15,905 | 75,930 | 3.98 |
| v24.20.0 | better-sqlite3-multiple-ciphers | 271.4 | 14,740 | 50,943 | 27,778 | 158,128 | 3.98 |
| v24.21.0 | better-sqlite3-multiple-ciphers | 94.8 | 9,979 | 34,741 | 17,974 | 76,260 | 3.98 |
| v25.2.0 | better-sqlite3-multiple-ciphers | 98.6 | 9,620 | 15,633 | 18,122 | 82,420 | 3.98 |
| v25.2.1 | better-sqlite3-multiple-ciphers | 96.9 | 9,914 | 32,293 | 18,157 | 90,245 | 3.98 |
| v25.3.0 | better-sqlite3-multiple-ciphers | 98.0 | 9,908 | 33,508 | 18,164 | 81,281 | 3.98 |
| v25.4.0 | better-sqlite3-multiple-ciphers | 96.9 | 9,826 | 32,614 | 18,006 | 88,960 | 3.98 |
| v25.5.0 | better-sqlite3-multiple-ciphers | 96.8 | 10,069 | 32,753 | 18,127 | 88,566 | 3.98 |
| v25.6.0 | better-sqlite3-multiple-ciphers | 97.1 | 9,851 | 32,409 | 17,999 | 87,866 | 3.98 |
| v25.6.1 | better-sqlite3-multiple-ciphers | 93.9 | 10,108 | 32,980 | 18,344 | 88,802 | 3.98 |
| v25.7.0 | better-sqlite3-multiple-ciphers | 94.6 | 9,837 | 32,268 | 18,045 | 91,241 | 3.98 |
| v25.8.0 | better-sqlite3-multiple-ciphers | 99.0 | 9,375 | 31,519 | 16,792 | 76,190 | 3.98 |
| v25.8.1 | better-sqlite3-multiple-ciphers | 94.5 | 9,689 | 32,297 | 17,440 | 76,658 | 3.98 |
| v25.8.2 | better-sqlite3-multiple-ciphers | 96.9 | 9,556 | 30,997 | 16,740 | 76,371 | 3.98 |
| v25.9.0 | better-sqlite3-multiple-ciphers | 94.7 | 10,146 | 24,516 | 17,930 | 87,712 | 3.98 |
| v26.0.0 | better-sqlite3-multiple-ciphers | 94.3 | 10,152 | 34,305 | 18,386 | 94,162 | 3.98 |
| v26.1.0 | better-sqlite3-multiple-ciphers | 94.4 | 10,143 | 33,600 | 18,274 | 95,602 | 3.98 |
| v26.10.0 | better-sqlite3-multiple-ciphers | 95.2 | 9,899 | 31,602 | 17,602 | 71,093 | 3.98 |
| v26.2.0 | better-sqlite3-multiple-ciphers | 94.4 | 10,092 | 33,225 | 18,405 | 91,659 | 3.98 |
| v26.3.0 | better-sqlite3-multiple-ciphers | 93.7 | 9,924 | 33,026 | 18,392 | 88,176 | 3.98 |
| v26.3.1 | better-sqlite3-multiple-ciphers | 96.3 | 8,999 | 35,369 | 16,258 | 88,207 | 3.98 |
| v26.4.0 | better-sqlite3-multiple-ciphers | 95.7 | 9,283 | 33,114 | 18,182 | 90,744 | 3.98 |
| v26.5.0 | better-sqlite3-multiple-ciphers | 97.4 | 8,793 | 32,739 | 15,576 | 80,328 | 3.98 |
| v26.5.1 | better-sqlite3-multiple-ciphers | 96.0 | 9,703 | 32,882 | 18,161 | 88,881 | 3.98 |
| v26.6.0 | better-sqlite3-multiple-ciphers | 98.4 | 8,860 | 34,486 | 15,688 | 80,263 | 3.98 |
| v26.7.0 | better-sqlite3-multiple-ciphers | 97.9 | 9,609 | 33,234 | 17,672 | 75,330 | 3.98 |
| v26.8.1 | better-sqlite3-multiple-ciphers | 97.9 | 12,417 | 44,833 | 23,005 | 119,546 | 3.98 |
| v26.8.2 | better-sqlite3-multiple-ciphers | 361.0 | 11,011 | 39,079 | 21,116 | 106,564 | 3.98 |
| v26.9.0 | better-sqlite3-multiple-ciphers | 102.2 | 9,124 | 33,620 | 15,708 | 73,148 | 3.98 |
| Node Version | Library | Setup (ms) | Insert/sec | Select/sec | Update/sec | Delete/sec | DB Size (MB) |
|---|---|---|---|---|---|---|---|
| v18.20.4 | better-sqlite3-multiple-ciphers | 77.2 | 12,150 | 27,429 | 21,113 | 110,096 | 3.98 |
| v18.20.8 | better-sqlite3-multiple-ciphers | 96.9 | 9,999 | 13,363 | 18,052 | 87,943 | 3.98 |
| v20.19.5 | better-sqlite3-multiple-ciphers | 94.5 | 10,052 | 14,351 | 17,796 | 79,277 | 3.98 |
| v20.19.6 | better-sqlite3-multiple-ciphers | 93.7 | 10,547 | 14,419 | 18,847 | 86,266 | 3.98 |
| v20.20.0 | better-sqlite3-multiple-ciphers | 95.1 | 10,173 | 14,240 | 18,477 | 91,149 | 3.98 |
| v20.20.1 | better-sqlite3-multiple-ciphers | 96.9 | 9,727 | 12,981 | 17,392 | 75,103 | 3.98 |
| v20.20.2 | better-sqlite3-multiple-ciphers | 96.1 | 10,057 | 14,215 | 17,596 | 89,198 | 3.98 |
| v22.13.0 | better-sqlite3-multiple-ciphers | 97.1 | 10,971 | 19,857 | 22,588 | 121,581 | 3.98 |
| v22.21.1 | better-sqlite3-multiple-ciphers | 102.8 | 10,447 | 15,044 | 20,192 | 79,834 | 3.98 |
| v22.22.0 | better-sqlite3-multiple-ciphers | 96.0 | 9,935 | 32,410 | 18,517 | 82,699 | 3.98 |
| v22.22.1 | better-sqlite3-multiple-ciphers | 96.8 | 9,940 | 33,110 | 17,567 | 72,754 | 3.98 |
| v22.22.2 | better-sqlite3-multiple-ciphers | 98.5 | 10,363 | 33,133 | 18,411 | 87,100 | 3.98 |
| v22.22.3 | better-sqlite3-multiple-ciphers | 99.0 | 9,325 | 33,891 | 16,320 | 79,183 | 3.98 |
| v22.23.0 | better-sqlite3-multiple-ciphers | 95.0 | 10,273 | 32,711 | 18,724 | 91,233 | 3.98 |
| v22.23.1 | better-sqlite3-multiple-ciphers | 105.7 | 11,416 | 43,135 | 20,645 | 101,688 | 3.98 |
| v22.23.2 | better-sqlite3-multiple-ciphers | 101.9 | 6,503 | 32,709 | 15,458 | 70,121 | 3.98 |
| v24.11.1 | better-sqlite3-multiple-ciphers | 118.3 | 8,792 | 12,608 | 16,794 | 81,281 | 3.98 |
| v24.12.0 | better-sqlite3-multiple-ciphers | 100.0 | 10,226 | 33,217 | 18,611 | 82,223 | 3.98 |
| v24.13.0 | better-sqlite3-multiple-ciphers | 102.0 | 8,806 | 32,870 | 15,262 | 67,372 | 3.98 |
| v24.13.1 | better-sqlite3-multiple-ciphers | 100.8 | 9,826 | 33,791 | 18,618 | 73,986 | 3.98 |
| v24.14.0 | better-sqlite3-multiple-ciphers | 96.2 | 10,247 | 33,093 | 18,595 | 91,735 | 3.98 |
| v24.14.1 | better-sqlite3-multiple-ciphers | 96.1 | 10,302 | 32,889 | 18,631 | 81,679 | 3.98 |
| v24.15.0 | better-sqlite3-multiple-ciphers | 95.9 | 9,450 | 32,202 | 18,957 | 91,324 | 3.98 |
| v24.16.0 | better-sqlite3-multiple-ciphers | 95.4 | 10,305 | 32,398 | 18,742 | 90,580 | 3.98 |
| v24.17.0 | better-sqlite3-multiple-ciphers | 97.1 | 10,509 | 35,021 | 22,019 | 146,199 | 3.98 |
| v24.18.0 | better-sqlite3-multiple-ciphers | 96.2 | 9,798 | 32,167 | 17,583 | 72,171 | 3.98 |
| v24.19.0 | better-sqlite3-multiple-ciphers | 98.5 | 9,063 | 34,990 | 15,760 | 76,453 | 3.98 |
| v24.20.0 | better-sqlite3-multiple-ciphers | 106.2 | 14,483 | 48,246 | 28,786 | 158,730 | 3.98 |
| v24.21.0 | better-sqlite3-multiple-ciphers | 96.4 | 9,998 | 34,274 | 17,819 | 73,335 | 3.98 |
| v25.2.0 | better-sqlite3-multiple-ciphers | 99.7 | 8,322 | 15,507 | 18,095 | 81,880 | 3.98 |
| v25.2.1 | better-sqlite3-multiple-ciphers | 96.3 | 6,658 | 25,696 | 17,844 | 84,803 | 3.98 |
| v25.3.0 | better-sqlite3-multiple-ciphers | 97.2 | 9,979 | 32,078 | 18,130 | 89,518 | 3.98 |
| v25.4.0 | better-sqlite3-multiple-ciphers | 98.0 | 9,961 | 31,357 | 17,709 | 86,573 | 3.98 |
| v25.5.0 | better-sqlite3-multiple-ciphers | 98.6 | 9,726 | 31,588 | 17,673 | 87,329 | 3.98 |
| v25.6.0 | better-sqlite3-multiple-ciphers | 99.7 | 9,920 | 31,521 | 18,113 | 90,001 | 3.98 |
| v25.6.1 | better-sqlite3-multiple-ciphers | 96.2 | 9,957 | 21,010 | 18,052 | 83,731 | 3.98 |
| v25.7.0 | better-sqlite3-multiple-ciphers | 106.6 | 9,687 | 31,724 | 18,348 | 94,260 | 3.98 |
| v25.8.0 | better-sqlite3-multiple-ciphers | 99.7 | 8,804 | 30,670 | 16,775 | 76,599 | 3.98 |
| v25.8.1 | better-sqlite3-multiple-ciphers | 96.2 | 9,677 | 31,654 | 17,252 | 79,917 | 3.98 |
| v25.8.2 | better-sqlite3-multiple-ciphers | 99.2 | 9,461 | 28,460 | 16,685 | 72,908 | 3.98 |
| v25.9.0 | better-sqlite3-multiple-ciphers | 94.9 | 10,008 | 32,249 | 18,127 | 88,960 | 3.98 |
| v26.0.0 | better-sqlite3-multiple-ciphers | 94.7 | 10,062 | 32,631 | 18,004 | 93,015 | 3.98 |
| v26.1.0 | better-sqlite3-multiple-ciphers | 94.2 | 10,051 | 32,933 | 18,371 | 96,163 | 3.98 |
| v26.10.0 | better-sqlite3-multiple-ciphers | 95.4 | 9,851 | 31,581 | 17,459 | 61,346 | 3.98 |
| v26.2.0 | better-sqlite3-multiple-ciphers | 93.6 | 10,218 | 32,935 | 18,480 | 91,575 | 3.98 |
| v26.3.0 | better-sqlite3-multiple-ciphers | 95.4 | 9,965 | 32,232 | 18,161 | 76,249 | 3.98 |
| v26.3.1 | better-sqlite3-multiple-ciphers | 96.4 | 9,367 | 35,108 | 16,284 | 89,389 | 3.98 |
| v26.4.0 | better-sqlite3-multiple-ciphers | 95.5 | 9,982 | 32,827 | 17,628 | 85,749 | 3.98 |
| v26.5.0 | better-sqlite3-multiple-ciphers | 97.7 | 8,960 | 34,146 | 15,546 | 82,864 | 3.98 |
| v26.5.1 | better-sqlite3-multiple-ciphers | 96.2 | 9,977 | 33,171 | 18,003 | 88,020 | 3.98 |
| v26.6.0 | better-sqlite3-multiple-ciphers | 98.9 | 9,005 | 34,541 | 15,712 | 81,044 | 3.98 |
| v26.7.0 | better-sqlite3-multiple-ciphers | 98.7 | 9,764 | 33,135 | 17,772 | 74,538 | 3.98 |
| v26.8.1 | better-sqlite3-multiple-ciphers | 125.7 | 10,705 | 47,139 | 23,962 | 110,742 | 3.98 |
| v26.8.2 | better-sqlite3-multiple-ciphers | 238.7 | 11,321 | 40,943 | 21,352 | 104,932 | 3.98 |
| v26.9.0 | better-sqlite3-multiple-ciphers | 100.7 | 8,037 | 36,794 | 15,699 | 74,129 | 3.98 |
| Node Version | Library | Setup (ms) | Insert/sec | Select/sec | Update/sec | Delete/sec | DB Size (MB) |
|---|---|---|---|---|---|---|---|
| v18.20.4 | better-sqlite3-multiple-ciphers | 76.8 | 12,077 | 27,109 | 20,485 | 137,931 | 4.12 |
| v18.20.8 | better-sqlite3-multiple-ciphers | 98.5 | 10,098 | 12,869 | 17,739 | 82,284 | 4.12 |
| v20.19.5 | better-sqlite3-multiple-ciphers | 97.8 | 10,072 | 14,529 | 18,070 | 84,947 | 4.12 |
| v20.19.6 | better-sqlite3-multiple-ciphers | 97.2 | 10,526 | 14,377 | 19,060 | 88,331 | 4.12 |
| v20.20.0 | better-sqlite3-multiple-ciphers | 96.7 | 10,188 | 14,196 | 18,700 | 90,490 | 4.12 |
| v20.20.1 | better-sqlite3-multiple-ciphers | 98.2 | 9,844 | 13,165 | 17,361 | 74,267 | 4.12 |
| v20.20.2 | better-sqlite3-multiple-ciphers | 97.1 | 9,957 | 13,597 | 17,758 | 90,245 | 4.12 |
| v22.13.0 | better-sqlite3-multiple-ciphers | 95.3 | 11,169 | 18,908 | 22,200 | 118,078 | 4.12 |
| v22.21.1 | better-sqlite3-multiple-ciphers | 94.7 | 11,001 | 17,000 | 19,486 | 112,613 | 4.12 |
| v22.22.0 | better-sqlite3-multiple-ciphers | 95.6 | 10,282 | 32,330 | 17,301 | 82,905 | 4.12 |
| v22.22.1 | better-sqlite3-multiple-ciphers | 95.8 | 9,891 | 33,561 | 17,245 | 77,077 | 4.12 |
| v22.22.2 | better-sqlite3-multiple-ciphers | 93.3 | 10,371 | 32,814 | 18,785 | 92,421 | 4.12 |
| v22.22.3 | better-sqlite3-multiple-ciphers | 98.2 | 9,461 | 32,637 | 16,469 | 78,684 | 4.12 |
| v22.23.0 | better-sqlite3-multiple-ciphers | 94.2 | 10,412 | 32,574 | 18,726 | 89,518 | 4.12 |
| v22.23.1 | better-sqlite3-multiple-ciphers | 99.5 | 11,511 | 42,191 | 20,665 | 100,766 | 4.12 |
| v22.23.2 | better-sqlite3-multiple-ciphers | 99.7 | 8,952 | 36,270 | 15,584 | 70,467 | 4.12 |
| v24.11.1 | better-sqlite3-multiple-ciphers | 100.2 | 9,981 | 16,660 | 19,736 | 113,340 | 4.12 |
| v24.12.0 | better-sqlite3-multiple-ciphers | 99.0 | 9,905 | 29,382 | 18,713 | 83,591 | 4.12 |
| v24.13.0 | better-sqlite3-multiple-ciphers | 102.4 | 8,806 | 27,379 | 15,049 | 70,517 | 4.12 |
| v24.13.1 | better-sqlite3-multiple-ciphers | 90.8 | 10,141 | 30,047 | 19,256 | 79,277 | 4.12 |
| v24.14.0 | better-sqlite3-multiple-ciphers | 97.3 | 10,144 | 28,934 | 18,166 | 87,635 | 4.12 |
| v24.14.1 | better-sqlite3-multiple-ciphers | 96.0 | 10,178 | 32,890 | 18,647 | 90,744 | 4.12 |
| v24.15.0 | better-sqlite3-multiple-ciphers | 98.5 | 9,550 | 32,831 | 19,002 | 87,017 | 4.12 |
| v24.16.0 | better-sqlite3-multiple-ciphers | 113.2 | 10,189 | 31,947 | 18,243 | 78,407 | 4.12 |
| v24.17.0 | better-sqlite3-multiple-ciphers | 99.6 | 11,201 | 34,556 | 22,220 | 134,880 | 4.12 |
| v24.18.0 | better-sqlite3-multiple-ciphers | 94.8 | 9,655 | 32,899 | 18,017 | 71,911 | 4.12 |
| v24.19.0 | better-sqlite3-multiple-ciphers | 97.3 | 9,053 | 35,848 | 15,884 | 75,301 | 4.12 |
| v24.20.0 | better-sqlite3-multiple-ciphers | 92.3 | 7,157 | 56,839 | 29,378 | 158,806 | 4.12 |
| v24.21.0 | better-sqlite3-multiple-ciphers | 95.9 | 10,121 | 34,802 | 17,821 | 78,284 | 4.12 |
| v25.2.0 | better-sqlite3-multiple-ciphers | 99.3 | 9,757 | 14,620 | 17,738 | 78,162 | 4.12 |
| v25.2.1 | better-sqlite3-multiple-ciphers | 98.1 | 9,917 | 27,705 | 17,918 | 89,437 | 4.12 |
| v25.3.0 | better-sqlite3-multiple-ciphers | 97.9 | 9,973 | 28,272 | 18,076 | 85,749 | 4.12 |
| v25.4.0 | better-sqlite3-multiple-ciphers | 97.5 | 10,000 | 28,062 | 17,938 | 85,455 | 4.12 |
| v25.5.0 | better-sqlite3-multiple-ciphers | 99.2 | 9,946 | 27,593 | 18,133 | 90,909 | 4.12 |
| v25.6.0 | better-sqlite3-multiple-ciphers | 96.8 | 10,014 | 27,749 | 17,872 | 86,199 | 4.12 |
| v25.6.1 | better-sqlite3-multiple-ciphers | 96.6 | 9,835 | 28,346 | 17,865 | 89,198 | 4.12 |
| v25.7.0 | better-sqlite3-multiple-ciphers | 94.4 | 9,959 | 27,352 | 18,041 | 89,928 | 4.12 |
| v25.8.0 | better-sqlite3-multiple-ciphers | 99.9 | 9,144 | 26,631 | 16,767 | 78,407 | 4.12 |
| v25.8.1 | better-sqlite3-multiple-ciphers | 95.8 | 9,538 | 27,425 | 17,372 | 79,853 | 4.12 |
| v25.8.2 | better-sqlite3-multiple-ciphers | 98.9 | 9,596 | 25,790 | 16,862 | 73,883 | 4.12 |
| v25.9.0 | better-sqlite3-multiple-ciphers | 102.1 | 9,584 | 26,877 | 17,585 | 90,001 | 4.12 |
| v26.0.0 | better-sqlite3-multiple-ciphers | 93.6 | 10,133 | 32,943 | 18,255 | 95,147 | 4.12 |
| v26.1.0 | better-sqlite3-multiple-ciphers | 92.9 | 10,182 | 32,718 | 18,283 | 94,607 | 4.12 |
| v26.10.0 | better-sqlite3-multiple-ciphers | 96.8 | 9,890 | 34,727 | 17,817 | 72,854 | 4.12 |
| v26.2.0 | better-sqlite3-multiple-ciphers | 94.6 | 9,934 | 32,263 | 18,352 | 87,176 | 4.12 |
| v26.3.0 | better-sqlite3-multiple-ciphers | 94.0 | 10,092 | 32,675 | 18,288 | 82,905 | 4.12 |
| v26.3.1 | better-sqlite3-multiple-ciphers | 98.0 | 9,110 | 35,125 | 16,098 | 87,207 | 4.12 |
| v26.4.0 | better-sqlite3-multiple-ciphers | 95.4 | 10,131 | 32,904 | 18,458 | 87,866 | 4.12 |
| v26.5.0 | better-sqlite3-multiple-ciphers | 96.9 | 9,027 | 34,122 | 15,727 | 82,250 | 4.12 |
| v26.5.1 | better-sqlite3-multiple-ciphers | 96.5 | 10,184 | 33,337 | 18,254 | 86,044 | 4.12 |
| v26.6.0 | better-sqlite3-multiple-ciphers | 97.7 | 9,128 | 34,603 | 15,854 | 76,046 | 4.12 |
| v26.7.0 | better-sqlite3-multiple-ciphers | 94.9 | 9,543 | 33,299 | 17,841 | 76,840 | 4.12 |
| v26.8.1 | better-sqlite3-multiple-ciphers | 222.3 | 11,405 | 46,093 | 23,766 | 133,601 | 4.12 |
| v26.8.2 | better-sqlite3-multiple-ciphers | 124.4 | 11,511 | 42,873 | 21,469 | 113,404 | 4.12 |
| v26.9.0 | better-sqlite3-multiple-ciphers | 97.4 | 9,064 | 37,287 | 15,952 | 79,246 | 4.12 |
| Node Version | Library | Setup (ms) | Insert/sec | Select/sec | Update/sec | Delete/sec | DB Size (MB) |
|---|---|---|---|---|---|---|---|
| v18.20.4 | better-sqlite3-multiple-ciphers | 77.5 | 8,884 | 26,936 | 12,477 | 162,153 | 3.98 |
| v18.20.8 | better-sqlite3-multiple-ciphers | 99.3 | 3,563 | 9,385 | 4,641 | 47,125 | 3.98 |
| v20.19.5 | better-sqlite3-multiple-ciphers | 98.7 | 3,331 | 14,314 | 4,257 | 61,308 | 3.98 |
| v20.19.6 | better-sqlite3-multiple-ciphers | 96.9 | 3,495 | 12,604 | 4,653 | 76,023 | 3.98 |
| v20.20.0 | better-sqlite3-multiple-ciphers | 95.9 | 3,348 | 14,150 | 4,588 | 68,837 | 3.98 |
| v20.20.1 | better-sqlite3-multiple-ciphers | 99.3 | 3,297 | 13,005 | 4,329 | 63,095 | 3.98 |
| v20.20.2 | better-sqlite3-multiple-ciphers | 100.3 | 2,826 | 11,666 | 3,462 | 72,913 | 3.98 |
| v22.13.0 | better-sqlite3-multiple-ciphers | 92.7 | 4,275 | 18,716 | 5,659 | 100,513 | 3.98 |
| v22.21.1 | better-sqlite3-multiple-ciphers | 96.7 | 4,638 | 17,081 | 5,734 | 101,523 | 3.98 |
| v22.22.0 | better-sqlite3-multiple-ciphers | 97.7 | 3,003 | 31,269 | 4,320 | 71,043 | 3.98 |
| v22.22.1 | better-sqlite3-multiple-ciphers | 103.5 | 3,246 | 27,091 | 4,322 | 67,995 | 3.98 |
| v22.22.2 | better-sqlite3-multiple-ciphers | 102.4 | 2,603 | 21,969 | 3,986 | 75,506 | 3.98 |
| v22.22.3 | better-sqlite3-multiple-ciphers | 103.4 | 3,970 | 22,639 | 5,536 | 66,921 | 3.98 |
| v22.23.0 | better-sqlite3-multiple-ciphers | 100.8 | 3,209 | 22,415 | 4,281 | 74,873 | 3.98 |
| v22.23.1 | better-sqlite3-multiple-ciphers | 115.7 | 3,438 | 29,117 | 4,367 | 87,974 | 3.98 |
| v22.23.2 | better-sqlite3-multiple-ciphers | 104.6 | 4,063 | 31,625 | 5,922 | 63,115 | 3.98 |
| v24.11.1 | better-sqlite3-multiple-ciphers | 144.2 | 2,973 | 9,294 | 4,405 | 96,852 | 3.98 |
| v24.12.0 | better-sqlite3-multiple-ciphers | 103.1 | 1,161 | 28,242 | 3,525 | 71,808 | 3.98 |
| v24.13.0 | better-sqlite3-multiple-ciphers | 104.2 | 4,259 | 31,782 | 4,923 | 33,272 | 3.98 |
| v24.13.1 | better-sqlite3-multiple-ciphers | 97.8 | 3,930 | 33,526 | 5,302 | 74,766 | 3.98 |
| v24.14.0 | better-sqlite3-multiple-ciphers | 98.1 | 3,350 | 32,065 | 4,435 | 73,335 | 3.98 |
| v24.14.1 | better-sqlite3-multiple-ciphers | 98.1 | 3,076 | 31,886 | 4,524 | 71,500 | 3.98 |
| v24.15.0 | better-sqlite3-multiple-ciphers | 101.3 | 2,248 | 30,106 | 3,081 | 74,322 | 3.98 |
| v24.16.0 | better-sqlite3-multiple-ciphers | 99.0 | 3,244 | 30,800 | 4,285 | 78,970 | 3.98 |
| v24.17.0 | better-sqlite3-multiple-ciphers | 100.7 | 1,568 | 31,379 | 1,276 | 54,392 | 3.98 |
| v24.18.0 | better-sqlite3-multiple-ciphers | 99.2 | 2,336 | 30,649 | 4,211 | 63,091 | 3.98 |
| v24.19.0 | better-sqlite3-multiple-ciphers | 100.4 | 4,160 | 35,341 | 5,571 | 62,759 | 3.98 |
| v24.20.0 | better-sqlite3-multiple-ciphers | 242.6 | 626 | 47,063 | 362 | 106,270 | 3.98 |
| v24.21.0 | better-sqlite3-multiple-ciphers | 97.4 | 3,935 | 33,543 | 4,861 | 51,237 | 3.98 |
| v25.2.0 | better-sqlite3-multiple-ciphers | 101.7 | 2,725 | 15,114 | 3,346 | 74,766 | 3.98 |
| v25.2.1 | better-sqlite3-multiple-ciphers | 100.4 | 3,018 | 30,549 | 3,917 | 72,754 | 3.98 |
| v25.3.0 | better-sqlite3-multiple-ciphers | 101.2 | 3,023 | 31,018 | 4,334 | 70,942 | 3.98 |
| v25.4.0 | better-sqlite3-multiple-ciphers | 100.7 | 3,098 | 29,866 | 4,300 | 70,048 | 3.98 |
| v25.5.0 | better-sqlite3-multiple-ciphers | 102.2 | 3,287 | 30,885 | 4,859 | 78,345 | 3.98 |
| v25.6.0 | better-sqlite3-multiple-ciphers | 99.3 | 3,278 | 31,083 | 4,573 | 76,132 | 3.98 |
| v25.6.1 | better-sqlite3-multiple-ciphers | 112.9 | 3,116 | 31,022 | 3,449 | 70,092 | 3.98 |
| v25.7.0 | better-sqlite3-multiple-ciphers | 97.3 | 2,876 | 30,551 | 3,633 | 72,223 | 3.98 |
| v25.8.0 | better-sqlite3-multiple-ciphers | 108.3 | 1,567 | 28,213 | 2,153 | 38,957 | 3.98 |
| v25.8.1 | better-sqlite3-multiple-ciphers | 99.3 | 3,314 | 30,841 | 4,647 | 71,602 | 3.98 |
| v25.8.2 | better-sqlite3-multiple-ciphers | 100.3 | 3,770 | 29,354 | 4,677 | 60,056 | 3.98 |
| v25.9.0 | better-sqlite3-multiple-ciphers | 97.5 | 3,452 | 30,864 | 3,479 | 53,433 | 3.98 |
| v26.0.0 | better-sqlite3-multiple-ciphers | 98.1 | 3,558 | 32,643 | 4,706 | 81,077 | 3.98 |
| v26.1.0 | better-sqlite3-multiple-ciphers | 97.9 | 3,528 | 31,516 | 4,382 | 79,853 | 3.98 |
| v26.10.0 | better-sqlite3-multiple-ciphers | 98.1 | 3,377 | 33,386 | 4,526 | 55,270 | 3.98 |
| v26.2.0 | better-sqlite3-multiple-ciphers | 99.4 | 2,672 | 29,312 | 3,283 | 75,786 | 3.98 |
| v26.3.0 | better-sqlite3-multiple-ciphers | 96.7 | 3,159 | 31,093 | 3,622 | 66,366 | 3.98 |
| v26.3.1 | better-sqlite3-multiple-ciphers | 98.3 | 4,396 | 34,487 | 5,952 | 74,184 | 3.98 |
| v26.4.0 | better-sqlite3-multiple-ciphers | 98.7 | 3,275 | 31,261 | 4,208 | 75,614 | 3.98 |
| v26.5.0 | better-sqlite3-multiple-ciphers | 100.0 | 4,331 | 33,627 | 5,329 | 73,099 | 3.98 |
| v26.5.1 | better-sqlite3-multiple-ciphers | 98.8 | 2,828 | 31,307 | 3,697 | 73,126 | 3.98 |
| v26.6.0 | better-sqlite3-multiple-ciphers | 100.5 | 3,460 | 28,706 | 5,062 | 70,220 | 3.98 |
| v26.7.0 | better-sqlite3-multiple-ciphers | 102.1 | 2,105 | 30,813 | 1,806 | 63,898 | 3.98 |
| v26.8.1 | better-sqlite3-multiple-ciphers | 234.5 | 829 | 41,499 | 3,056 | 113,688 | 3.98 |
| v26.8.2 | better-sqlite3-multiple-ciphers | 182.3 | 1,699 | 38,430 | 1,283 | 109,842 | 3.98 |
| v26.9.0 | better-sqlite3-multiple-ciphers | 99.3 | 4,519 | 36,451 | 6,098 | 60,665 | 3.98 |
| Node Version | Library | Setup (ms) | Insert/sec | Select/sec | Update/sec | Delete/sec | DB Size (MB) |
|---|---|---|---|---|---|---|---|
| v18.20.4 | better-sqlite3-multiple-ciphers | 101.0 | 13,275 | 27,223 | 23,768 | 151,906 | 3.98 |
| v18.20.8 | better-sqlite3-multiple-ciphers | 92.2 | 10,676 | 13,199 | 18,474 | 82,974 | 3.98 |
| v20.19.5 | better-sqlite3-multiple-ciphers | 90.9 | 10,536 | 14,515 | 18,804 | 83,389 | 3.98 |
| v20.19.6 | better-sqlite3-multiple-ciphers | 90.6 | 11,088 | 14,270 | 19,179 | 87,789 | 3.98 |
| v20.20.0 | better-sqlite3-multiple-ciphers | 88.3 | 10,687 | 14,454 | 18,408 | 91,743 | 3.98 |
| v20.20.1 | better-sqlite3-multiple-ciphers | 100.0 | 10,299 | 13,235 | 17,599 | 72,913 | 3.98 |
| v20.20.2 | better-sqlite3-multiple-ciphers | 92.9 | 10,605 | 14,059 | 18,293 | 90,163 | 3.98 |
| v22.13.0 | better-sqlite3-multiple-ciphers | 82.1 | 10,093 | 19,517 | 23,070 | 130,839 | 3.98 |
| v22.21.1 | better-sqlite3-multiple-ciphers | 87.5 | 11,260 | 17,239 | 20,120 | 105,966 | 3.98 |
| v22.22.0 | better-sqlite3-multiple-ciphers | 96.0 | 11,027 | 28,781 | 18,689 | 40,362 | 3.98 |
| v22.22.1 | better-sqlite3-multiple-ciphers | 95.5 | 10,294 | 33,300 | 17,917 | 73,502 | 3.98 |
| v22.22.2 | better-sqlite3-multiple-ciphers | 92.9 | 10,928 | 18,732 | 19,032 | 90,253 | 3.98 |
| v22.22.3 | better-sqlite3-multiple-ciphers | 97.1 | 9,839 | 29,081 | 16,654 | 75,529 | 3.98 |
| v22.23.0 | better-sqlite3-multiple-ciphers | 121.6 | 11,068 | 29,512 | 19,120 | 88,168 | 3.98 |
| v22.23.1 | better-sqlite3-multiple-ciphers | 87.5 | 12,321 | 37,358 | 19,730 | 98,184 | 3.98 |
| v22.23.2 | better-sqlite3-multiple-ciphers | 104.2 | 9,155 | 34,466 | 15,875 | 69,828 | 3.98 |
| v24.11.1 | better-sqlite3-multiple-ciphers | 126.4 | 8,617 | 9,316 | 15,436 | 78,382 | 3.98 |
| v24.12.0 | better-sqlite3-multiple-ciphers | 97.9 | 10,818 | 33,729 | 19,006 | 77,736 | 3.98 |
| v24.13.0 | better-sqlite3-multiple-ciphers | 104.5 | 8,005 | 33,194 | 15,429 | 68,157 | 3.98 |
| v24.13.1 | better-sqlite3-multiple-ciphers | 91.1 | 9,136 | 33,079 | 18,091 | 77,616 | 3.98 |
| v24.14.0 | better-sqlite3-multiple-ciphers | 98.2 | 9,490 | 33,637 | 19,144 | 93,721 | 3.98 |
| v24.14.1 | better-sqlite3-multiple-ciphers | 91.0 | 10,891 | 33,232 | 18,965 | 90,498 | 3.98 |
| v24.15.0 | better-sqlite3-multiple-ciphers | 90.3 | 10,830 | 29,079 | 18,853 | 84,660 | 3.98 |
| v24.16.0 | better-sqlite3-multiple-ciphers | 96.0 | 11,042 | 32,267 | 19,310 | 93,633 | 3.98 |
| v24.17.0 | better-sqlite3-multiple-ciphers | 92.3 | 12,038 | 34,719 | 22,470 | 140,017 | 3.98 |
| v24.18.0 | better-sqlite3-multiple-ciphers | 94.1 | 10,434 | 32,540 | 18,287 | 75,047 | 3.98 |
| v24.19.0 | better-sqlite3-multiple-ciphers | 93.5 | 9,514 | 35,580 | 16,193 | 77,048 | 3.98 |
| v24.20.0 | better-sqlite3-multiple-ciphers | 64.9 | 16,857 | 53,947 | 30,049 | 161,970 | 3.98 |
| v24.21.0 | better-sqlite3-multiple-ciphers | 92.2 | 9,087 | 34,621 | 18,144 | 75,672 | 3.98 |
| v25.2.0 | better-sqlite3-multiple-ciphers | 98.3 | 10,441 | 15,529 | 18,209 | 42,366 | 3.98 |
| v25.2.1 | better-sqlite3-multiple-ciphers | 102.2 | 8,826 | 30,904 | 18,510 | 89,847 | 3.98 |
| v25.3.0 | better-sqlite3-multiple-ciphers | 97.8 | 10,487 | 32,856 | 18,527 | 88,020 | 3.98 |
| v25.4.0 | better-sqlite3-multiple-ciphers | 98.2 | 10,142 | 32,099 | 18,404 | 89,518 | 3.98 |
| v25.5.0 | better-sqlite3-multiple-ciphers | 100.6 | 10,657 | 32,393 | 18,511 | 89,767 | 3.98 |
| v25.6.0 | better-sqlite3-multiple-ciphers | 100.1 | 10,434 | 31,874 | 18,278 | 88,566 | 3.98 |
| v25.6.1 | better-sqlite3-multiple-ciphers | 98.4 | 8,838 | 32,258 | 18,335 | 81,880 | 3.98 |
| v25.7.0 | better-sqlite3-multiple-ciphers | 92.9 | 9,156 | 32,132 | 18,585 | 84,875 | 3.98 |
| v25.8.0 | better-sqlite3-multiple-ciphers | 98.1 | 8,637 | 31,719 | 17,177 | 73,932 | 3.98 |
| v25.8.1 | better-sqlite3-multiple-ciphers | 94.0 | 8,940 | 31,988 | 17,548 | 78,660 | 3.98 |
| v25.8.2 | better-sqlite3-multiple-ciphers | 101.9 | 8,489 | 29,975 | 17,160 | 75,160 | 3.98 |
| v25.9.0 | better-sqlite3-multiple-ciphers | 89.0 | 10,630 | 29,935 | 18,314 | 87,405 | 3.98 |
| v26.0.0 | better-sqlite3-multiple-ciphers | 92.8 | 10,186 | 33,544 | 18,623 | 94,162 | 3.98 |
| v26.1.0 | better-sqlite3-multiple-ciphers | 87.9 | 10,240 | 32,744 | 18,537 | 94,429 | 3.98 |
| v26.10.0 | better-sqlite3-multiple-ciphers | 92.7 | 10,414 | 34,800 | 18,098 | 74,156 | 3.98 |
| v26.2.0 | better-sqlite3-multiple-ciphers | 93.6 | 10,393 | 32,065 | 18,572 | 58,065 | 3.98 |
| v26.3.0 | better-sqlite3-multiple-ciphers | 96.0 | 10,727 | 32,171 | 18,657 | 80,431 | 3.98 |
| v26.3.1 | better-sqlite3-multiple-ciphers | 91.7 | 9,698 | 35,161 | 16,505 | 88,913 | 3.98 |
| v26.4.0 | better-sqlite3-multiple-ciphers | 89.8 | 10,612 | 32,788 | 18,772 | 87,245 | 3.98 |
| v26.5.0 | better-sqlite3-multiple-ciphers | 92.4 | 9,471 | 34,435 | 16,030 | 80,658 | 3.98 |
| v26.5.1 | better-sqlite3-multiple-ciphers | 89.7 | 10,659 | 33,017 | 18,016 | 72,754 | 3.98 |
| v26.6.0 | better-sqlite3-multiple-ciphers | 93.6 | 9,403 | 34,183 | 16,065 | 82,379 | 3.98 |
| v26.7.0 | better-sqlite3-multiple-ciphers | 100.4 | 10,028 | 32,651 | 18,058 | 80,295 | 3.98 |
| v26.8.1 | better-sqlite3-multiple-ciphers | 73.0 | 14,179 | 46,809 | 24,122 | 125,329 | 3.98 |
| v26.8.2 | better-sqlite3-multiple-ciphers | 81.5 | 12,264 | 41,809 | 21,461 | 128,254 | 3.98 |
| v26.9.0 | better-sqlite3-multiple-ciphers | 93.8 | 9,434 | 37,403 | 16,150 | 75,245 | 3.98 |
| Node Version | Library | Setup (ms) | Insert/sec | Select/sec | Update/sec | Delete/sec | DB Size (MB) |
|---|---|---|---|---|---|---|---|
| v18.20.4 | better-sqlite3-multiple-ciphers | 77.0 | 12,166 | 27,033 | 21,289 | 137,155 | 3.98 |
| v18.20.8 | better-sqlite3-multiple-ciphers | 94.3 | 10,119 | 13,419 | 18,160 | 34,573 | 3.98 |
| v20.19.5 | better-sqlite3-multiple-ciphers | 93.6 | 10,191 | 13,996 | 18,543 | 86,118 | 3.98 |
| v20.19.6 | better-sqlite3-multiple-ciphers | 94.5 | 10,647 | 14,456 | 18,919 | 87,943 | 3.98 |
| v20.20.0 | better-sqlite3-multiple-ciphers | 93.6 | 10,410 | 14,267 | 18,448 | 87,627 | 3.98 |
| v20.20.1 | better-sqlite3-multiple-ciphers | 96.1 | 6,717 | 12,845 | 17,258 | 77,077 | 3.98 |
| v20.20.2 | better-sqlite3-multiple-ciphers | 94.3 | 9,950 | 13,392 | 17,848 | 90,572 | 3.98 |
| v22.13.0 | better-sqlite3-multiple-ciphers | 88.4 | 11,981 | 19,530 | 23,199 | 124,270 | 3.98 |
| v22.21.1 | better-sqlite3-multiple-ciphers | 96.6 | 11,008 | 15,630 | 19,202 | 99,039 | 3.98 |
| v22.22.0 | better-sqlite3-multiple-ciphers | 94.7 | 10,088 | 32,865 | 18,235 | 86,790 | 3.98 |
| v22.22.1 | better-sqlite3-multiple-ciphers | 95.6 | 9,936 | 33,495 | 17,804 | 76,313 | 3.98 |
| v22.22.2 | better-sqlite3-multiple-ciphers | 95.5 | 10,338 | 33,464 | 18,713 | 90,408 | 3.98 |
| v22.22.3 | better-sqlite3-multiple-ciphers | 99.9 | 9,331 | 33,887 | 16,395 | 78,561 | 3.98 |
| v22.23.0 | better-sqlite3-multiple-ciphers | 94.8 | 10,350 | 33,787 | 18,725 | 83,243 | 3.98 |
| v22.23.1 | better-sqlite3-multiple-ciphers | 106.6 | 11,700 | 42,908 | 20,628 | 100,959 | 3.98 |
| v22.23.2 | better-sqlite3-multiple-ciphers | 99.8 | 8,942 | 33,929 | 15,426 | 72,354 | 3.98 |
| v24.11.1 | better-sqlite3-multiple-ciphers | 118.2 | 10,511 | 14,410 | 19,432 | 107,550 | 3.98 |
| v24.12.0 | better-sqlite3-multiple-ciphers | 98.2 | 9,943 | 33,606 | 18,729 | 85,455 | 3.98 |
| v24.13.0 | better-sqlite3-multiple-ciphers | 101.2 | 8,738 | 33,746 | 15,262 | 70,512 | 3.98 |
| v24.13.1 | better-sqlite3-multiple-ciphers | 90.6 | 10,497 | 34,630 | 18,715 | 84,796 | 3.98 |
| v24.14.0 | better-sqlite3-multiple-ciphers | 95.6 | 10,293 | 33,656 | 18,532 | 89,445 | 3.98 |
| v24.14.1 | better-sqlite3-multiple-ciphers | 96.5 | 10,321 | 33,070 | 18,522 | 90,580 | 3.98 |
| v24.15.0 | better-sqlite3-multiple-ciphers | 95.6 | 10,304 | 28,223 | 18,546 | 87,627 | 3.98 |
| v24.16.0 | better-sqlite3-multiple-ciphers | 98.2 | 10,102 | 32,513 | 18,339 | 81,149 | 3.98 |
| v24.17.0 | better-sqlite3-multiple-ciphers | 97.6 | 10,937 | 35,044 | 22,278 | 134,174 | 3.98 |
| v24.18.0 | better-sqlite3-multiple-ciphers | 95.4 | 9,804 | 28,370 | 17,811 | 68,980 | 3.98 |
| v24.19.0 | better-sqlite3-multiple-ciphers | 97.5 | 9,086 | 35,115 | 15,731 | 75,930 | 3.98 |
| v24.20.0 | better-sqlite3-multiple-ciphers | 174.0 | 12,032 | 54,175 | 28,934 | 142,349 | 3.98 |
| v24.21.0 | better-sqlite3-multiple-ciphers | 96.3 | 9,624 | 34,113 | 17,580 | 73,774 | 3.98 |
| v25.2.0 | better-sqlite3-multiple-ciphers | 99.7 | 9,608 | 14,918 | 18,115 | 83,598 | 3.98 |
| v25.2.1 | better-sqlite3-multiple-ciphers | 96.4 | 9,943 | 32,686 | 18,128 | 91,912 | 3.98 |
| v25.3.0 | better-sqlite3-multiple-ciphers | 97.2 | 9,973 | 33,224 | 18,194 | 83,949 | 3.98 |
| v25.4.0 | better-sqlite3-multiple-ciphers | 96.0 | 9,815 | 32,423 | 18,153 | 79,981 | 3.98 |
| v25.5.0 | better-sqlite3-multiple-ciphers | 96.5 | 10,038 | 32,352 | 18,160 | 86,498 | 3.98 |
| v25.6.0 | better-sqlite3-multiple-ciphers | 98.6 | 9,903 | 32,191 | 18,041 | 90,654 | 3.98 |
| v25.6.1 | better-sqlite3-multiple-ciphers | 98.2 | 10,035 | 33,059 | 17,850 | 77,985 | 3.98 |
| v25.7.0 | better-sqlite3-multiple-ciphers | 93.5 | 9,974 | 32,386 | 18,140 | 89,518 | 3.98 |
| v25.8.0 | better-sqlite3-multiple-ciphers | 100.5 | 9,406 | 31,335 | 16,839 | 75,386 | 3.98 |
| v25.8.1 | better-sqlite3-multiple-ciphers | 96.2 | 9,790 | 32,192 | 17,336 | 79,026 | 3.98 |
| v25.8.2 | better-sqlite3-multiple-ciphers | 96.8 | 9,478 | 30,780 | 16,892 | 77,616 | 3.98 |
| v25.9.0 | better-sqlite3-multiple-ciphers | 93.9 | 10,135 | 28,043 | 18,032 | 91,066 | 3.98 |
| v26.0.0 | better-sqlite3-multiple-ciphers | 97.1 | 10,338 | 33,912 | 18,432 | 93,110 | 3.98 |
| v26.1.0 | better-sqlite3-multiple-ciphers | 97.5 | 10,140 | 33,263 | 18,312 | 92,336 | 3.98 |
| v26.10.0 | better-sqlite3-multiple-ciphers | 95.3 | 9,915 | 33,775 | 17,616 | 68,648 | 3.98 |
| v26.2.0 | better-sqlite3-multiple-ciphers | 98.1 | 10,129 | 33,184 | 18,328 | 89,928 | 3.98 |
| v26.3.0 | better-sqlite3-multiple-ciphers | 94.7 | 10,189 | 30,746 | 18,020 | 83,668 | 3.98 |
| v26.3.1 | better-sqlite3-multiple-ciphers | 97.2 | 8,765 | 35,290 | 15,964 | 85,193 | 3.98 |
| v26.4.0 | better-sqlite3-multiple-ciphers | 94.3 | 9,517 | 32,762 | 18,406 | 82,563 | 3.98 |
| v26.5.0 | better-sqlite3-multiple-ciphers | 97.9 | 6,132 | 34,569 | 15,862 | 84,048 | 3.98 |
| v26.5.1 | better-sqlite3-multiple-ciphers | 94.2 | 9,958 | 33,488 | 18,202 | 87,712 | 3.98 |
| v26.6.0 | better-sqlite3-multiple-ciphers | 96.6 | 8,841 | 34,948 | 15,673 | 86,453 | 3.98 |
| v26.7.0 | better-sqlite3-multiple-ciphers | 96.2 | 9,585 | 33,285 | 17,767 | 79,974 | 3.98 |
| v26.8.1 | better-sqlite3-multiple-ciphers | 129.8 | 12,926 | 46,455 | 23,731 | 123,594 | 3.98 |
| v26.8.2 | better-sqlite3-multiple-ciphers | 101.1 | 11,618 | 40,981 | 21,054 | 123,274 | 3.98 |
| v26.9.0 | better-sqlite3-multiple-ciphers | 97.3 | 9,088 | 36,695 | 15,691 | 75,529 | 3.98 |
| Node Version | Library | Setup (ms) | Insert/sec | Select/sec | Update/sec | Delete/sec | DB Size (MB) |
|---|---|---|---|---|---|---|---|
| v18.20.4 | better-sqlite3 | 227.7 | 25,149 | 23,360 | 60,954 | 157,903 | 3.98 |
| v18.20.8 | better-sqlite3 | 25.6 | 31,297 | 13,361 | 51,832 | 89,278 | 3.98 |
| v20.19.5 | better-sqlite3 | 26.4 | 29,498 | 14,404 | 50,049 | 78,964 | 3.98 |
| v20.19.6 | better-sqlite3 | 25.1 | 30,968 | 14,372 | 53,149 | 96,246 | 3.98 |
| v20.20.0 | better-sqlite3 | 24.7 | 31,182 | 14,719 | 52,586 | 94,877 | 3.98 |
| v20.20.1 | better-sqlite3 | 27.1 | 26,167 | 14,488 | 42,618 | 78,284 | 3.98 |
| v20.20.2 | better-sqlite3 | 24.7 | 29,091 | 14,574 | 51,667 | 91,316 | 3.98 |
| v22.13.0 | better-sqlite3 | 27.0 | 44,889 | 36,970 | 87,725 | 134,735 | 3.98 |
| v22.21.1 | - | - | - | - | - | - | - |
| v22.22.0 | better-sqlite3 | 25.3 | 30,052 | 32,922 | 51,655 | 91,399 | 3.98 |
| v22.22.1 | better-sqlite3 | 26.3 | 26,642 | 33,102 | 44,666 | 76,254 | 3.98 |
| v22.22.2 | better-sqlite3 | 26.3 | 30,606 | 33,437 | 52,358 | 79,592 | 3.98 |
| v22.22.3 | better-sqlite3 | 26.8 | 27,895 | 33,697 | 45,355 | 84,552 | 3.98 |
| v22.23.0 | better-sqlite3 | 27.0 | 30,669 | 33,906 | 49,299 | 90,334 | 3.98 |
| v22.23.1 | better-sqlite3 | 52.5 | 31,253 | 46,761 | 54,163 | 51,026 | 3.98 |
| v22.23.2 | better-sqlite3 | 30.4 | 25,519 | 34,948 | 40,385 | 73,314 | 3.98 |
| v24.11.1 | - | - | - | - | - | - | - |
| v24.12.0 | better-sqlite3 | 28.4 | 28,691 | 33,270 | 51,436 | 81,753 | 3.98 |
| v24.13.0 | better-sqlite3 | 29.0 | 23,477 | 33,379 | 37,256 | 72,934 | 3.98 |
| v24.13.1 | better-sqlite3 | 26.6 | 26,092 | 35,081 | 49,970 | 87,474 | 3.98 |
| v24.14.0 | better-sqlite3 | 25.2 | 29,696 | 34,105 | 52,714 | 93,809 | 3.98 |
| v24.14.1 | better-sqlite3 | 26.4 | 30,341 | 33,065 | 52,433 | 91,149 | 3.98 |
| v24.15.0 | better-sqlite3 | 31.3 | 28,738 | 32,039 | 52,584 | 83,112 | 3.98 |
| v24.16.0 | better-sqlite3 | 27.4 | 28,900 | 32,505 | 50,051 | 59,591 | 3.98 |
| v24.17.0 | better-sqlite3 | 22.5 | 40,457 | 34,495 | 81,807 | 131,010 | 3.98 |
| v24.18.0 | better-sqlite3 | 28.9 | 26,657 | 32,088 | 46,764 | 76,894 | 3.98 |
| v24.19.0 | better-sqlite3 | 27.0 | 24,417 | 35,470 | 42,547 | 78,740 | 3.98 |
| v24.20.0 | better-sqlite3 | 44.4 | 37,931 | 42,053 | 86,501 | 167,112 | 3.98 |
| v24.21.0 | better-sqlite3 | 26.6 | 28,343 | 35,770 | 48,751 | 77,616 | 3.98 |
| v25.2.0 | - | - | - | - | - | - | - |
| v25.2.1 | better-sqlite3 | 26.9 | 29,015 | 33,338 | 51,162 | 93,110 | 3.98 |
| v25.3.0 | better-sqlite3 | 28.4 | 29,734 | 32,338 | 51,872 | 88,331 | 3.98 |
| v25.4.0 | better-sqlite3 | 27.8 | 29,247 | 31,821 | 52,033 | 82,291 | 3.98 |
| v25.5.0 | better-sqlite3 | 28.6 | 30,383 | 33,768 | 52,413 | 90,744 | 3.98 |
| v25.6.0 | better-sqlite3 | 28.6 | 29,914 | 33,197 | 50,996 | 87,558 | 3.98 |
| v25.6.1 | better-sqlite3 | 25.4 | 29,900 | 33,050 | 49,832 | 82,359 | 3.98 |
| v25.7.0 | better-sqlite3 | 25.6 | 29,107 | 33,181 | 51,735 | 84,803 | 3.98 |
| v25.8.0 | better-sqlite3 | 26.8 | 25,217 | 32,977 | 44,362 | 76,894 | 3.98 |
| v25.8.1 | better-sqlite3 | 27.9 | 26,069 | 32,390 | 46,302 | 74,041 | 3.98 |
| v25.8.2 | better-sqlite3 | 26.9 | 26,841 | 32,123 | 43,002 | 75,735 | 3.98 |
| v25.9.0 | better-sqlite3 | 32.0 | 28,859 | 31,828 | 51,976 | 89,598 | 3.98 |
| v26.0.0 | better-sqlite3 | 24.9 | 30,655 | 34,189 | 53,117 | 90,901 | 3.98 |
| v26.1.0 | better-sqlite3 | 31.2 | 21,340 | 33,124 | 52,562 | 86,715 | 3.98 |
| v26.10.0 | better-sqlite3 | 28.7 | 26,563 | 33,022 | 47,662 | 72,754 | 3.98 |
| v26.2.0 | better-sqlite3 | 25.1 | 29,117 | 35,146 | 53,005 | 86,415 | 3.98 |
| v26.3.0 | better-sqlite3 | 26.6 | 30,795 | 29,202 | 50,430 | 87,025 | 3.98 |
| v26.3.1 | better-sqlite3 | 25.2 | 29,249 | 29,671 | 46,078 | 86,603 | 3.98 |
| v26.4.0 | better-sqlite3 | 25.8 | 29,872 | 29,407 | 51,878 | 88,098 | 3.98 |
| v26.5.0 | better-sqlite3 | 30.0 | 26,929 | 29,221 | 42,145 | 81,248 | 3.98 |
| v26.5.1 | better-sqlite3 | 31.8 | 27,887 | 31,949 | 48,479 | 79,095 | 3.98 |
| v26.6.0 | better-sqlite3 | 30.2 | 25,430 | 31,911 | 40,773 | 77,107 | 3.98 |
| v26.7.0 | better-sqlite3 | 29.6 | 27,228 | 32,290 | 45,756 | 72,590 | 3.98 |
| v26.8.1 | better-sqlite3 | 74.1 | 36,053 | 47,302 | 83,396 | 138,007 | 3.98 |
| v26.8.2 | better-sqlite3 | 45.8 | 41,741 | 43,439 | 84,784 | 128,866 | 3.98 |
| v26.9.0 | better-sqlite3 | 28.4 | 27,128 | 35,717 | 42,815 | 78,567 | 3.98 |
| Node Version | Platform | Arch | Timestamp |
|---|---|---|---|
| v18.20.4 | darwin | arm64 | 11/15/2025, 3:17:47 AM |
| v18.20.8 | linux | x64 | 4/9/2026, 3:15:40 AM |
| v20.19.5 | linux | x64 | 12/3/2025, 2:41:14 AM |
| v20.19.6 | linux | x64 | 1/22/2026, 2:52:43 AM |
| v20.20.0 | linux | x64 | 2/25/2026, 3:09:47 AM |
| v20.20.1 | linux | x64 | 3/15/2026, 3:13:31 AM |
| v20.20.2 | linux | x64 | 7/21/2026, 5:28:55 AM |
| v22.13.0 | linux | x64 | 11/15/2025, 3:02:58 AM |
| v22.21.1 | linux | x64 | 11/14/2025, 1:32:10 PM |
| v22.22.0 | linux | x64 | 1/23/2026, 2:49:01 AM |
| v22.22.1 | linux | x64 | 3/13/2026, 3:06:23 AM |
| v22.22.2 | linux | x64 | 4/23/2026, 3:15:26 AM |
| v22.22.3 | linux | x64 | 6/10/2026, 3:19:59 AM |
| v22.23.0 | linux | x64 | 6/25/2026, 3:19:03 AM |
| v22.23.1 | linux | x64 | 8/7/2026, 4:30:09 AM |
| v22.23.2 | linux | x64 | 8/12/2026, 4:13:16 AM |
| v24.11.1 | linux | x64 | 11/14/2025, 1:33:38 PM |
| v24.12.0 | linux | x64 | 12/18/2025, 2:42:14 AM |
| v24.13.0 | linux | x64 | 2/19/2026, 3:09:49 AM |
| v24.13.1 | linux | x64 | 3/4/2026, 3:05:00 AM |
| v24.14.0 | linux | x64 | 3/27/2026, 3:14:21 AM |
| v24.14.1 | linux | x64 | 4/3/2026, 3:13:44 AM |
| v24.15.0 | linux | x64 | 5/26/2026, 3:20:15 AM |
| v24.16.0 | linux | x64 | 5/27/2026, 3:21:16 AM |
| v24.17.0 | linux | x64 | 6/25/2026, 3:18:48 AM |
| v24.18.0 | linux | x64 | 8/13/2026, 4:17:53 AM |
| v24.19.0 | linux | x64 | 9/3/2026, 7:05:28 AM |
| v24.20.0 | linux | x64 | 9/4/2026, 7:14:21 AM |
| v24.21.0 | linux | x64 | 9/23/2026, 7:38:58 AM |
| v25.2.0 | linux | x64 | 11/14/2025, 5:56:49 PM |
| v25.2.1 | linux | x64 | 11/18/2025, 2:41:30 AM |
| v25.3.0 | linux | x64 | 1/14/2026, 2:53:55 AM |
| v25.4.0 | linux | x64 | 1/20/2026, 2:51:05 AM |
| v25.5.0 | linux | x64 | 1/27/2026, 2:54:55 AM |
| v25.6.0 | linux | x64 | 2/4/2026, 3:08:03 AM |
| v25.6.1 | linux | x64 | 2/11/2026, 3:13:58 AM |
| v25.7.0 | linux | x64 | 2/25/2026, 3:11:21 AM |
| v25.8.0 | linux | x64 | 3/4/2026, 3:06:44 AM |
| v25.8.1 | linux | x64 | 3/13/2026, 3:07:58 AM |
| v25.8.2 | linux | x64 | 3/25/2026, 3:13:43 AM |
| v25.9.0 | linux | x64 | 5/5/2026, 3:18:38 AM |
| v26.0.0 | linux | x64 | 5/7/2026, 3:20:51 AM |
| v26.1.0 | linux | x64 | 5/15/2026, 3:21:55 AM |
| v26.10.0 | linux | x64 | 9/23/2026, 7:39:02 AM |
| v26.2.0 | linux | x64 | 5/21/2026, 3:22:26 AM |
| v26.3.0 | linux | x64 | 6/2/2026, 3:23:22 AM |
| v26.3.1 | linux | x64 | 6/19/2026, 3:22:43 AM |
| v26.4.0 | linux | x64 | 6/25/2026, 3:18:52 AM |
| v26.5.0 | linux | x64 | 7/9/2026, 6:12:41 AM |
| v26.5.1 | linux | x64 | 7/30/2026, 5:15:22 AM |
| v26.6.0 | linux | x64 | 8/4/2026, 5:21:01 AM |
| v26.7.0 | linux | x64 | 8/6/2026, 5:23:39 AM |
| v26.8.1 | linux | x64 | 8/27/2026, 12:42:30 PM |
| v26.8.2 | linux | x64 | 9/10/2026, 7:13:45 AM |
| v26.9.0 | linux | x64 | 9/17/2026, 7:30:27 AM |
Insert Operations: better-sqlite3 (no encryption) on Node.js v22.13.0 (44,889 ops/sec)
Select Operations: No Auto Vacuum on Node.js v24.20.0 (56,839 ops/sec)
Update Operations: better-sqlite3 (no encryption) on Node.js v22.13.0 (87,725 ops/sec)
Delete Operations: better-sqlite3 (no encryption) on Node.js v24.20.0 (167,112 ops/sec)
The benchmark tests Forward Email's actual production PRAGMA settings:
PRAGMA analysis_limit = 400;
PRAGMA auto_vacuum = NONE;
PRAGMA automatic_index = ON;
PRAGMA busy_timeout = 30000;
PRAGMA cache_size = -16000;
PRAGMA foreign_keys = ON;
PRAGMA journal_mode = WAL;
PRAGMA synchronous = NORMAL;
PRAGMA temp_store = 1;
PRAGMA wal_autocheckpoint = 1000;Important
These settings are optimized for Forward Email's email infrastructure handling millions of messages with perfect user isolation through per-user SQLite databases.
- Install Node.js (v20 LTS recommended)
- Install build tools for native compilation:
# Ubuntu/Debian sudo apt-get install build-essential python3 # macOS xcode-select --install # Windows npm install --global windows-build-tools
# Install dependencies
npm install
# Run full benchmark suite
npm run benchmark
# Results are saved to benchmark_results_node_v{version}.jsonCaution
Native modules must be recompiled when switching Node.js versions.
# Switch to different Node version
nvm use 20 # or 18, 22, 24
# Clean and reinstall native modules
rm -rf node_modules package-lock.json
npm install
# Run benchmarks
npm run benchmarkThe benchmark tests 12 different SQLite configurations:
- Forward Email Production - Actual production settings
- WAL Autocheckpoint 1000 - Optimized checkpoint frequency
- Memory Temp Storage -
temp_store = MEMORY - Increased Cache -
cache_size = -64000 - MMAP 256MB - Memory-mapped I/O
- Sync OFF - Disabled synchronization (testing only)
- Incremental Vacuum -
auto_vacuum = INCREMENTAL - Analysis Limit 1000 - Increased query planner limit
- Busy Timeout 60s - Extended lock timeout
- Cache + MMAP - Combined optimizations
- All Optimizations - Maximum performance settings
- Baseline - Minimal PRAGMA settings
- Node.js v20 LTS is optimal for SQLite applications
- WAL autocheckpoint=1000 provides consistent 12% performance boost
- ChaCha20 encryption has minimal performance impact (6% overhead)
- Node.js v24 has severe regressions - avoid for SQLite workloads
- Native module recompilation required when switching Node versions
Tip
For production SQLite applications, use Node.js v20 LTS with wal_autocheckpoint=1000 for optimal performance.
Production Settings:
- Use
journal_mode = WALfor concurrent access - Set
wal_autocheckpoint = 1000for 12% performance boost - Keep
temp_store = 1(disk) to prevent memory exhaustion - Use
cache_size = -16000(16MB) for balanced memory usage - Enable
foreign_keys = ONfor data integrity
Development/Testing:
- Consider
synchronous = OFFfor testing (never in production) - Use
temp_store = MEMORYfor temporary performance gains - Increase
cache_sizefor read-heavy workloads
Forward Email uses ChaCha20 encryption for quantum resistance:
// ChaCha20 configuration
const db = new Database(':memory:', {
nativeBinding: 'better-sqlite3-multiple-ciphers/build/Release/better_sqlite3.node'
});
db.pragma('cipher = chacha20');
db.pragma('key = "your-encryption-key"');Performance Impact:
- ChaCha20: ~6% slower than unencrypted
- AES256: ~4% slower than unencrypted
- Quantum resistance worth the minimal performance cost
Note
Forward Email prioritizes quantum-resistant encryption over raw performance, making ChaCha20 the optimal choice for long-term security.
Error: Module version mismatch
# Solution: Rebuild native modules
rm -rf node_modules
npm installError: Python not found
# Ubuntu/Debian
sudo apt-get install python3 python3-dev
# macOS
brew install python3
# Windows
npm install --global windows-build-toolsNode v18 Engine Warnings:
npm WARN EBADENGINE Unsupported engine { required: { node: '>=20.0.0' } }
This is expected - the package prefers Node ≥20 but works on v18.
Node v22/v24 Performance Issues: Use Node v20 LTS for optimal SQLite performance. Newer versions have regressions.
This benchmark suite is part of Forward Email's open source contributions to the SQLite community. See our other contributions:
- Forward Email SQLite Optimization Blog Post
- Quantum-Resistant Encryption Guide
- Richard Hipp's BLOB Column Optimization
Created by: Forward Email Team License: MIT Node.js Support: v18+ (v20 LTS recommended)