生成 Fuchsia 性能测试结果

本页列出了用于生成 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 库并提取一组事件。

      测试应使用 python_perf_test 模板,因为它包含轨迹处理和指标发布所需的所有依赖项。

  • Dart

    • 概要:您可以使用 Dart trace_processing从 Fuchsia 跟踪记录中提取性能指标。如果您现有的正确性测试并且希望通过扩展该测试来生成性能结果,则此方法很有用。在这种情况下,通常修改被测软件以生成额外的跟踪事件。

      例如 flatland_benchmarks_test.dart,它通过定义 MetricsSpecSet 来使用 trace_processing 库。

    • 低级别:您可以使用 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

  • Go

    • 低级别:您可以使用 go-benchmarking 库生成 fuchsiaperf.json 文件。

在 GN 中声明测试

对于大量基准测试,我们只需编写目标辅助组件,运行该组件,处理测试输出的 fuchsiaperf 文件,然后发布结果。模板 fuchsia_component_perf_test 可简化这一操作。模板 python_perf_test 可供以 Python 编写的其他处理性能指标的主机端测试使用。