1. 注册 (benchmark register)
- BENCHMARK_REGISTER_F 默认在程序startup的时候调用,也就是在main函数开始执行的时候,发生在用户代码之前。如何让 BENCHMARK_REGISTER_F 根据用户定义执行呢,其实很简单;
- 解决办法:使用函数包装当前文件所有的 benchmark register,然后在main函数合适的位置调用包装register的函数,注意需要在 ::benchmark::RunSpecifiedBenchmarks() 之前调用,因为这个函数会根据register传递的参数生成benchmark 并开始执行 benchmarkcase;
2. 传参 (passing arguments)
- 不难发现 google benchmark 没有现成的接口在用户层和 benchmark case 之间做参数传递,没有不代表不能,是可以通过实现fixture类进行参数传递的,可以继承 fixture 类,并使用单例实现参数传递;
3. 跨平台 (crossplatform)
- google benchmark 是支持跨平台编译的,不过移动端用不了 console_reporter,但可以使用file_reporter,并指定文件类型,然后通过 adb pull 拉取性能测试报告,前提是app需要有权限对 sdcard 进行读写~
4. 深度定制 (deep customization)
- 是可以对 benchmark 源代码进行修改的。浅修改,比如修改 benchmark 成员变量的访问权限;深度修改,添加更丰富的方法;如果改动过多,是考虑再写一套 benchmark 框架~