[Android]SQLite版本升级前后数据对比
前言
目前AOSP采用3.22.0版本的SQLite。截至目前,SQLite.org官网释放的最新版为3.31.1。
为了论证3.31.1是否在Android系统上有明显的性能提升,故而有了如下的测试数据;
基本信息
参与测试的SQLite版本: 3.22.0(Android Q基线默认) vs 3.31.1(截止目前最新版本)
被测机型: MT6761D/2GB/32GB/Android Q
控制变量: 在相同代码进度下,仅替换external/sqlite/dist/下的代码后编译软件进行对比测试
测试工具:
Androbench - 通用测试工具,版本5.0.1
IOEmulator - 自研测试工具,版本1.1
I. Androbench - SQLite跑分数据
SQLite版本 | Insert(QPS/sec) | Update (QPS/sec) | Delete (QPS/sec) |
---|---|---|---|
3.22.0 | 540.93/3.78 | 665.3/3.07 | 832.14/2.45 |
3.31.1 | 544.93/3.75 | 682.2/3.0 | 831.29/2.46 |
小结: UPDATE操作有2%~3%的稳定提升,其余部分没有明显提升;
II. IOEmulator V1.2测试数据
数据库属性:
单页大小:4KB
表数量:5
列数:10
Auto Vacuum:2 - INCREMENTAL
Sync Mode:2 - FULL
INSERT
数据内容:1
数据长度:100
数据行数:200
数据表数:5
数据列数:10
SQLite版本 | #1(ms) | #2(ms) | #3(ms) | #4(ms) | #5(ms) | AVG(ms) |
---|---|---|---|---|---|---|
3.22.0 | 1443 | 1454 | 1451 | 1448 | 1465 | 1452.2 |
3.31.1 | 1427 | 1445 | 1446 | 1446 | 1439 | 1440.6 |
UPDATE
数据内容:0
数据长度:100
数据行数:200
数据表数:5
数据列数:10
SQLite版本 | #1(ms) | #2(ms) | #3(ms) | #4(ms) | #5(ms) | AVG(ms) |
---|---|---|---|---|---|---|
3.22.0 | 1170 | 1169 | 1180 | 1182 | 1170 | 1174.2 |
3.31.1 | 1177 | 1162 | 1166 | 1164 | 1168 | 1167.4 |
DELETE
数据行数:200
数据表数:5
SQLite版本 | #1(ms) | #2(ms) | #3(ms) | #4(ms) | #5(ms) | AVG(ms) |
---|---|---|---|---|---|---|
3.22.0 | 1411 | 1397 | 1412 | 1410 | 1387 | 1403.4 |
3.31.1 | 1387 | 1386 | 1395 | 1390 | 1387 | 1389 |
小结: INSERT/UPDATE有1%不到的提升,DELETE有1%的提升;
总结
从Androbench测试数据来看,最新版(3.31.1)SQLite在update处理速度上有2%以上的提升;
从IOEmulator测试数据来看,最新版(3.31.1)SQLite在insert/update/delete处理速度上有1%左右的提升;
综上,考虑到客观偏差,3.31.1版本的SQLite较3.22.0的提升效果微乎其微,没有强制升级的必要;
其他
有空可以看看其他pragma组合、其他场景下的数据,但是考虑到上述的测试场景是Android Q的默认配置参数,因此该结果已具有较强说服力了。