本页列出了用于生成 Fuchsia 性能测试结果文件的库。
Fuchsia 性能测试结果采用 fuchsiaperf.json
格式。在 Fuchsia Infra 上运行且结果由 Fuchsia 工具跟踪的所有性能测试都会生成 fuchsiaperf.json
格式的结果。所有这些测试都通过基于 Python 的 Lacewing 框架或基于 Dart 的 SL4F 测试框架运行,但在很多情况下,Python 代码隐藏在视图中,开发者只需编写 GN 即可。
选项
有多种方法可以生成 fuchsiaperf.json
文件,具体取决于您要使用的编程语言。
下面列出的低级别选项是用于输出 fuchsiaperf
JSON 文件的瘦封装容器,而较高级别的选项对正在编写的性能测试类型做出更多假设。
Python:
概要:您可以使用 Python
trace_processing
库从 Fuchsia 跟踪记录中提取性能指标。如果您现有的正确性测试并且希望通过扩展该测试来生成性能结果,则此方法很有用。在这种情况下,通常修改被测软件以生成额外的跟踪事件。例如
perftest_trace_events_test
,它使用trace_processing
库提取一组事件。另一个示例是
flatland_benchmark
,它使用trace_processing.app_render
库提取一组事件,然后使用perf_publish
上传结果。测试应使用
python_perf_test
模板,因为它包含轨迹处理和指标发布所需的所有依赖项。
Dart(已弃用):
概要:您可以使用 Dart
trace_processing
库从 Fuchsia 跟踪记录中提取性能指标。如果您现有的正确性测试并且希望通过扩展该测试来生成性能结果,则此方法很有用。在这种情况下,通常修改被测软件以生成额外的跟踪事件。低级别:您可以使用
TestCaseResults
类生成fuchsiaperf.json
文件的条目。该库通常与trace_processing
库搭配使用,但也可以单独使用。高级别或低级别:在 Dart 中,您可以运行一个子进程来生成
fuchsiaperf.json
文件。子进程可以运行使用 Dart 以外的语言编写的代码。有多种 Dart SL4F 封装容器可以执行此操作。
C++::perftest C++ 库提供两个接口:
概要:您可以使用 perftest.h 创建 Microbenchmark。在此上下文中,Microbenchmark 是一种测试,我们会在测试中单独重复运行某项操作,并测量其运行时间。您可以将新的 Microbenchmark 添加到 src/tests/microbenchmarks/,也可以将新的 Microbenchmark 添加到源代码树的其他位置,前提是这些基准与此目录中的测试明显不同。
低级别:您可以使用 perftest/results.h 更直接地生成
fuchsiaperf.json
文件。
Rust:
概要:您可以使用 fuchsia-criterion Rust 库来创建 Microbenchmark。
低级别:您可以使用 Fuchsiaperf Rust 库生成
fuchsiaperf.json
文件。
Go:
- 低级别:您可以使用 go-benchmarking 库生成
fuchsiaperf.json
文件。
- 低级别:您可以使用 go-benchmarking 库生成
在 GN 中声明测试
对于大量基准测试,我们只需编写目标辅助组件,运行该组件,处理测试输出的 fuchsiaperf 文件,然后发布结果。模板 fuchsia_component_perf_test
可简化这一操作。模板 python_perf_test
可供以 Python 编写的其他处理性能指标的主机端测试使用。