AnyMath 文档

外部分析器支持

Julia为一些外部跟踪分析器提供了显式支持,使您能够获得运行时执行行为的高级概述。

目前支持的分析器有:

添加新区域

要添加新区域,请使用 JL_定时 宏。 通过搜索,您可以在整个代码库中找到许多示例 JL_定时. 要添加新类型的区域,请将其添加到 JL_TIMING_所有者 (并且可能 JL_TIMING_事件).

动态启用和禁用区域

JULIA_TIMING_SUBSYSTEMS环境变量允许您启用或禁用特定Julia运行的区域。 例如,将变量设置为 +GC,-推理 将启用 GC 区域和禁用 推论;推论 区域。

特蕾西探查器

Tracy是一个灵活的分析器,可以选择与Julia集成。

典型的Tracy会话可能如下所示:

tracy

和特蕾西一起建造茱莉亚

要启用Tracy集成,请使用额外选项构建Julia WITH_TRACY=1做吧。用户 档案。

安装Tracy配置文件查看器

获取配置文件查看器的最简单方法是添加 TracyProfiler_jll 打包并启动分析器:

run(TracyProfiler_jll.tracy())

注意在macOS上,您可能需要设置 TRACY_DPI_SCALE 环境变量为 1.0 如果分析器中的UI元素显得过大。

要运行将跟踪保存到磁盘的"无头"实例,请使用

run(`$(TracyProfiler_jll.capture()) -o mytracefile.tracy`)

相反。

有关使用Tracy UI的信息,请参阅Tracy手册。

与特蕾西剖析朱莉娅

使用Tracy分析Julia的典型工作流程涉及使用以下方法启动Julia:

JULIA_WAIT_FOR_TRACY=1 ./julia -e '...'

环境变量确保Julia等待,直到它成功连接到Tracy探查器,然后再继续执行。 之后,使用Tracy profiler UI,单击 连接,并且Julia执行应该恢复,并且应该开始分析。

使用Tracy分析包预编译

要分析包预编译过程,最简单的方法是显式调用 基地。[医]编译 使用要预编译的包:

pkg = Base.identify_package("SparseArrays")
withenv("JULIA_WAIT_FOR_TRACY" => 1, "TRACY_PORT" => 9001) do
    Base.compilecache(pkg)
end

在这里,我们为tracy使用自定义端口,这使得在Tracy UI中更容易找到要连接的正确客户端。

向区域添加元数据

各种 jl_timing_show_*jl_timing_printf 函数可用于将字符串(或字符串)附加到区域。 例如,用于推断的跟踪区域显示正在推断的方法实例。

TracyCZoneColor 函数可以用来设置某个区域的颜色. 搜索代码库以查看它是如何使用的。

在浏览器中查看Tracy文件

参观https://topolarity.github.io/trace-viewer/对于Tracy跟踪的(实验性)web查看器。

您可以打开本地 .特蕾西 文件或提供来自web的URL(例如Github回购中的文件)。 如果从web加载跟踪文件,还可以直接与其他人共享页面URL,使他们能够查看相同的跟踪。

启用堆栈跟踪样本

要在Tracy中启用调用堆栈采样,请在您的 做吧。用户 档案:

WITH_TRACY := 1
WITH_TRACY_CALLSTACKS := 1
USE_BINARYBUILDER_LIBTRACYCLIENT := 0

您可能还需要运行 make-C deps clean-libtracyclient 强迫重建特蕾西。

此功能对跟踪大小和性能分析开销有显着影响,因此建议尽可能将调用堆栈采样关闭,特别是如果您打算在线共享跟踪文件。

请注意,Julia JIT运行时尚未集成Tracy的符号化,因此Julia函数在这些堆栈跟踪中通常是未知的。

英特尔VTune(ITTAPI)分析器

这一节还没有写好。_