Octave支持在每个函数级别上分析代码执行情况。如果启用了评测,则在运行Octavecode时会记录对函数的每次调用(支持内置函数、运算符、oct和mex文件中的函数、Octave代码中的用户定义函数和匿名函数)。之后,这些数据可以帮助分析代码行为,尤其有助于在代码中找到“热点”,这些“热点”占用了大量计算时间,是花费优化精力的最佳目标。
分析的主要命令是profile
,可用于启动或停止探查器,也可用于随后查询收集的数据。数据以Octave数据结构返回,然后可以通过其他子程序或工具对其进行检查或进一步处理。
profile off
停止分析。收集到的数据稍后可以用检索和检查T = profile ("info")
.
profile clear
清除所有收集的探查器数据。
profile resume
在不清除旧数据的情况下重新启动分析。所有新收集的统计信息都会添加到现有的统计信息中。
S = profile ("status")
返回一个结构体,其中包含有关生产者当前状态的信息。目前,唯一的字段是ProfilerStatus
哪一个"on"
或"off"
.
T = profile ("info")
返回结构体中收集的分析统计信息T。平面性能剖析在字段中返回FunctionTable
它是一个结构体数组,每个条目对应于被调用的函数,并且存在其分析统计信息。此外,该fieldHierarchical
包含层次调用树。每个节点都有一个索引到FunctionTable
识别它对应的函数,以及在调用树中用于此级别的调用次数和时间的数据字段。
详见: profshow, profexplore.
对收集的数据进行概述的一种简单方法是profshow
。此函数获取从返回的探查器数据profile
作为输入并打印平面性能剖析,例如:
Function Attr Time (s) Calls ---------------------------------------- >myfib R 2.195 13529 binary <= 0.061 13529 binary - 0.050 13528 binary + 0.026 6764
这表明大部分运行时间都花在了执行函数上myfib,以及一些小部分评估列出的二进制运算符。此外,还显示了函数被调用的频率,探查器还记录了它是递归的。
(data)
¶(data, n)
¶()
¶(n)
¶显示每个函数的平面探查器结果。
打印出最关键的探查器数据(执行时间、调用次数)n函数。结果按在每个函数中花费的总时间降序排列。如果n未指定,默认为20。
输入data返回的结构体是profile ("info")
如果未指定,profshow
将使用当前配置文件数据集。
属性列显示R用于递归函数,对于所有其他函数类型为空。
详见: profexplore, profile.
(dir)
¶(dir, data)
¶(dir, name)
¶(dir, name, data)
¶将探查器数据导出为HTML。
将分析数据导出到data转换为文件夹中的一系列HTML文件dir。初始文件将为data/index.html.
如果name如果指定了,则它必须是一个包含要导出的配置文件的“名称”的字符串。此名称包含在HTML中。
输入data返回的结构体是profile ("info")
如果未指定,profexport
将使用当前配置文件数据集。
详见: profshow, profexplore, profile.
()
¶(data)
¶交互式地探索分层探查器输出。
假设data是从返回的具有配置文件数据的结构体profile (
,此命令打开一个交互式提示,可用于探索调用树。类型help以获取可能的命令列表。如果data省略,"info"
)profile ("info")
被调用并在其位置使用。
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2