[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的默認配置參數,因此該結果已具有較強說服力了。