如何检测Julia中的类型不稳定函数

时间:2015-01-22 02:42:08

标签: julia

设置:假设我有一个相当详细的软件(在Julia中),涉及多个模块的交互。我觉得它运行速度比应该慢。通常是first culprit to check for is type unstable functions,即编译器无法提前确定输出类型的函数。

问题:如何检测这些类型不稳定的功能?

我目前的工作:我使用的是分析工具,例如: @tholy的ProfileView.jl包,用于检测瓶颈,假设类型不稳定的函数将显示在此处(由于它们的运行时间过长)。但是真正好的是某种调试工具,在运行例程之后,会吐出一个函数列表,其中编译器无法提前确定输出类型。这可能吗?

2 个答案:

答案 0 :(得分:6)

你可以尝试TypeCheck.jl对探测器说慢的位。{/ p>

Julia 0.4也有@code_warntype

答案 1 :(得分:4)

除了IainDunning的优秀建议之外,使用--track-allocation=user运行julia并使用Coverage包中的analyze_malloc分析结果是快速获得高级概述的好方法。原则是类型不稳定性会触发内存分配,因此查找具有意外的大型分配的代码行是查找类型不稳定的最恶劣实例的好方法。

您可以找到有关track-allocation in the manual的更多信息,以及更多性能分析选项described