Profiling

Profiling

Profile.@profileMacro.
@profile

@profile <expression>在进行定期回溯的同时运行您的表达式. 这些附加到回溯的内部缓冲区.

source

Profile中的方法不会导出,需要调用,例如Profile.print() .

Profile.clearFunction.
clear()

从内部缓冲区清除所有现有的回溯.

source
Profile.printFunction.
print([io::IO = stdout,] [data::Vector]; kwargs...)

将分析结果打印到io (默认为stdout ). 如果不提供data向量,则将使用累积回溯的内部缓冲区.

关键字参数可以是以下各项的任意组合:

  • format –确定回溯打印时是否使用(默认, :tree )缩进或不使用( :flat )缩进来表示树结构.

  • C –如果为true ,则显示C和Fortran代码的回溯(通常不包括在内).

  • combine –如果为true (默认),则将合并与同一行代码相对应的指令指针.

  • maxdepth –以:tree格式将深度限制为大于maxdepth .

  • sortedby –以:flat格式控制顺序. :filefuncline (默认)按源代码行排序,而:count按收集的样本数顺序排序.

  • noisefloor –限制超出样本启发式本底噪声的帧(仅适用于格式:tree ). 建议尝试的值为2.0(默认值为0). 此参数隐藏n <= noisefloor * √N的样本,其中n是该行上的样本数, N是被叫方的样本数.

  • mincount –将打印输出限制为仅出现最少mincount行.

source
print([io::IO = stdout,] data::Vector, lidict::LineInfoDict; kwargs...)

将分析结果打印到io . 这种变异是用来检查以前调用远销结果retrieve . 提供回溯的矢量data和行信息的字典lidict .

有关有效的关键字参数的说明,请参见Profile.print([io], data) .

source
Profile.initFunction.
init(; n::Integer, delay::Real))

配置回溯之间的delay (以秒为单位),以及可能存储的指令指针的数量n . 每个指令指针都对应一行代码. 回溯通常由一长串指令指针组成. 可以通过不带任何参数调用此函数来获得默认设置,并且可以使用关键字或按顺序(n, delay)独立设置每个默认设置.

source
Profile.fetchFunction.
fetch() -> data

返回对回溯内部缓冲区的引用. 请注意,除非您先进行复制,否则后续操作(如clear )会影响data . 请注意, data中的值仅在当前会话中的此计算机上才有意义,因为它取决于JIT编译中使用的确切内存地址. 此功能主要供内部使用. 对于大多数用户而言, retrieve可能是一个更好的选择.

source
Profile.retrieveFunction.
retrieve() -> data, lidict

在便携式格式"出口"分析结果,返回集合中的所有回溯(的data ),而(会话专用)图的字典指令指针中data ,以LineInfo存储文件名值,函数名和行号. 此功能使您可以保存分析结果以供将来分析.

source
Profile.callersFunction.
callers(funcname, [data, lidict], [filename=<filename>], [linerange=<start:stop>]) -> Vector{Tuple{count, lineinfo}}

给定先前的概要分析运行,确定谁调用了特定函数. 提供文件名(以及可选的定义函数的行号范围)可以消除歧义. 返回的值是一个向量,其中包含呼叫次数和有关呼叫者的线路信息的计数. 可以选择提供从retrieve获得的回溯data ; 否则,将使用当前的内部配置文件缓冲区.

source
clear_malloc_data()

使用--track-allocation运行julia时,清除所有存储的内存分配数据. 执行要测试的命令(强制JIT编译),然后调用clear_malloc_data . 然后再次执行您的命令,退出Julia,然后检查生成的*.mem文件.

source

by  ICOPY.SITE