Android Benchmark 运行方法
添加自己的 Benchmark Case
如果需要增加自己的测试项目(比如使用不同的库,或不同的配置参数),派生对应的测试基类并实现其中打开、查询等接口,即可快速实现新的测试用例。具体可以参见 SingleThreadedTest
(基类)和 WCDBSingleThreadedTest
、FrameworkSingleThreadedTest
(派生测试类)。
Single-threaded Test
- Create: 打开 DB ,初始化并创建一个数据表和一个 Index。加密 DB 会在此时初始化密钥。
- Insert Transaction: 打开事务,重复执行
INSERT
19,000 次,提交事务。 - Insert Rollback: 打开事务,重复执行
INSERT
1,000 次,回滚事务。 - Update One SQL: 执行
UPDATE
语句,一次修改 10,000 条记录。 - Update Transaction: 打开事务,重复执行
UPDATE
10,000 次,每次修改一条记录,提交事务。 - Update Separated: 不使用事务,重复执行
UPDATE
1,000 次,每次修改一条记录。 - Query One: 使用 语句每次查询一条记录,重复执行 10,000 次。
- Query Fill: 使用
SELECT
语句一次性查询 10,000 条记录,遍历 Cursor 读出所有记录。 - Delete One SQL: 执行
DELETE
语句,一次性删除 5,000 条记录。 - Delete Transaction: 打开事务,重复执行
DELETE
5,000 次,每次删除一条记录,提交事务。 - WCDB: WCDB Android
- SQLCipher: SQLCipher Android
- (E): 加密
- (W): WAL 模式
Concurrent Test
测试多线程并发访问性能,有以下用例:
- WWWW (transaction): 4个并发写线程,各自打开事务,插入 5,000 条记录,然后提交事务。
- WWWW (separated): 4个并发写线程,不使用事务,插入 500 条记录。
- WWRR (batch): 4个并发线程,2个写线程各使用单条 语句修改 5,000 条记录,2个读线程各一次性查询 5,000 条记录。
- RRRR: 4个并发读线程,分别一次性查询 5,000 条记录和一次查询一条记录重复 5,000 次。
同样在不同库不同配置下跑,4个线程同时开始到全部结束计时,多次执行去平均值,单位毫秒。