可以使用 MEL/Python profiler 和 profilerTool 命令在分析器中开始/停止录制,查询事件信息,搜索事件,以及检测过程以进行分析。检测是对程序的修改,用于收集信息进行分析。
必须在编辑模式下使用以下 profilerTool 标志:
必须在查询模式下使用以下 profilerTool 标志:
使用 profiler 命令 -sampling (-s) 标志启用和禁用事件录制;如下所示:
profiler -s true; polyCube; profiler -s false;
若要添加分析类别,请使用 -addCategory 标志;如下所示:
int $melCategoryIndex = `profiler -addCategory "MEL Scripts"`;
当前,不支持包含本地化字符(即大写 ASCII 字符和双字节字符)的类别名称。
定义 MEL 过程,然后使用 -instrumentMel 标志检测此过程。以下示例演示了如何启用称为 Factorial 的过程的检测。
profiler -instrumentMel true -procedureName "Factorial" -categoryIndex $melCategoryIndex -colorIndex 8 -procedureDescription "FactorialDesc" ;
您可以禁用一个或多个过程的检测。若要禁用特定过程的检测,请将 -instrumentMel 设置为 False,并提供要禁用检测的过程的名称:
profiler -instrumentMel false -procedureName "Factorial" -categoryIndex $melCategoryIndex;
若要同时禁用所有检测,请使用 -clearAllMelInstrumentation 标志:
profiler -clearAllMelInstrumentation;
有关上文提到的标志以及其他有用标志(例如:-eventCount,用于查询缓冲区中的事件计数;或 -reset,用于重置“分析器”(Profiler)的数据)的详细信息,请参见 profiler MEL 命令文档。
有关如何与“分析器”(Profiler)的主视图交互的信息,请参见 profilerTool MEL 命令文档。例如,可以在视图之间切换,或者隔离特定的分段。
若要启用和禁用事件录制,请将采样分别设置为 True 和 False,如下所示:
cmds.profiler(sampling = True) cmds.polyCube() cmds.profiler(sampling = False)
若要添加分析类别,请调用 OpenMaya.MProfiler.addCategory(),如下所示:
categoryIndex = OpenMaya.MProfiler.addCategory("Python Scripts")
若要检测过程,请在过程定义中调用 OpenMaya.MProfilingScope();如下所示:
def Factorial(number): # Instrument this procedure profiler = OpenMaya.MProfilingScope(categoryIndex, OpenMaya.MProfiler.kColorE_L1, "Factorial", "FactorialDesc") result = 1 for i in range(1, number+1): result = result * i return result
有关上文提到的标志以及其他有用标志(例如:eventCount,用于查询缓冲区中的事件计数;或 reset,用于重置“分析器”(Profiler)的数据)的详细信息,请参见 profiler Python 命令文档。Python 可以使用 -instrumentMel 标志来检测 MEL 过程。
此外,使用自定义 Python 节点对其他线程求值时,也有可能会出现 Python 性能问题。
有关如何与“分析器”(Profiler)的主视图交互的信息,请参见 profilerTool Python 命令文档。例如,可以在视图之间切换,或者隔离特定的分段。
可以在插件中调用 MProfiler::addCategory() 方法,向“分析器”(Profiler)中添加类别。调用 MProfilingScope::MProfilingScope() 以检测要分析的函数。详细信息请参见 MProfiler 和 MProfilingScope C++ API 参考文档,以及 Maya 开发人员帮助中的 Autodesk Maya 2015 Extension 新特性。
使用 Python 或 C++ 检测过程时,也可以注册关联的 DG 节点。这样,在分析器图表中选择检测到的事件时,在属性编辑器、大纲视图或节点编辑器中也会选择并显示其关联的 DG 节点。
为此,在 Python 脚本或 C++ 插件中调用 MProfilingScope::MProfilingScope() 时,将关联的 DG 节点作为 MObject(输入参数之一)提供。MObject 输入参数必须指向 DG 节点,而不能指向属性或组件。
详细信息请参见 OpenMaya::MProfilingScope() C++ API 参考文档,以及 Maya 开发人员帮助中的“Autodesk Maya 2016 新特性”。