基准测试包 - modernc.org/sqlite-bench - Go 包

这是一个关于 SQLite 驱动的基准测试项目,基于go-sqlite-bench修改而来。

  • 驱动及版本:测试了 mattn 的github.com/mattn/go-sqlite3@v1.14.29(CGO 解决方案)、modernc 的modernc.org/sqlite@v1.38.2(纯 Go 解决方案,基于 SQLite C 代码转译)、ncruces 的github.com/ncruces/go-sqlite3@v0.27.1(纯 Go 解决方案,使用wazero)。Go 版本为 go1.24.4。
  • 基准测试类别:包括 Simple Benchmark(插入 100 万用户行并查询一次所有用户)、Complex Benchmark(插入用户、文章和评论并进行大 JOIN 查询)、Many Benchmark(插入 N 个用户并查询 1000 次)、Large Benchmark(插入 10000 个用户并查询)、Concurrent Benchmark(插入 100 万用户并多 goroutine 查询)。
  • 4GB RAM 相关:在 32 位架构和 linux/ppc64le 构建中,Large 基准测试使用 2.5k 用户,Concurrent 基准测试使用 250k 用户,以避免 OOM。
  • 数据库模式:包含 users、articles、comments 表及相关索引,设置了事务模式等。
  • 基准测试结果及评分卡:以每个测试的最佳时间为 1 分,统计各包在不同测试中的得分,现代 c 的总分最高,mattn 次之,ncruces 第三。但该评分仅为临时聚合指标,不代表在特定应用中的性能,且结果有一定波动。
  • 不同操作系统和硬件的结果:在 darwin/amd64、darwin/arm64、freebsd/amd64、freebsd/arm64、linux/386、linux/amd64、linux/amd64-0、linux/arm、linux/arm64、linux/loong64、linux/ppc64le、linux/riscv64、linux/s390x、windows/386、windows/amd64、windows/arm64 等系统下,分别测试了各驱动在不同基准测试中的性能,并给出相应图表和得分。

总体而言,不同驱动在不同系统环境下的性能表现各有优劣,具体应用中需根据实际情况选择合适的驱动。

阅读 11
0 条评论