Android Benchmark 运行方法

添加自己的 Benchmark Case

如果需要增加自己的测试项目(比如使用不同的库,或不同的配置参数),派生对应的测试基类并实现其中打开、查询等接口,即可快速实现新的测试用例。具体可以参见 SingleThreadedTest(基类)和 WCDBSingleThreadedTestFrameworkSingleThreadedTest(派生测试类)。

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个线程同时开始到全部结束计时,多次执行去平均值,单位毫秒。