对于解释性语言(如Python、Matlab)和编译型语言(如Julia),分析其性能差异很大。特别是,您所描述的分析需要“插装”代码,这意味着在每行代码之前/之后插入额外语句(读取时钟)。这些额外语句会增加开销,但在慢速的解释性语言中,这种开销通常是可以管理的。在像Julia这样的快速语言中,您更希望尽一切可能避免“破坏”编译代码:通常,编译器进行的优化将被添加的插装破坏,因此插装代码将无法准确反映真实的性能成本。如果您真的想使用插装分析器,则有旧版IProfile可进行逐行分析运行时间。然而,我建议您考虑使用内置的采样分析器;它具有许多优点,我从未遇到过IProfile真正更有用的情况。采样分析器不会修改您的任何代码:您运行的是与不进行分析时完全相同的代码。相反,它会定期对当前执行点进行“快照”。当同一点一遍又一遍地出现时,很可能是瓶颈之一。这通常就是优化代码所需的全部信息。
@profile <expression> 可能会达到你想要的效果。但是有许多不同的方法可以做到这一点*。大多数可用的分析功能在这里。更一般的指南在这里; 它将带领您了解回溯意味着什么以及如何控制输出。ProfileView.jl 包也可能很有用。*注意:Profile实现了“采样”分析器(它检查代码中的位置间隔为1ms),其原因和缺点在指南中有解释,但这很可能是几乎所有用例所需要的。
你还可以尝试使用VTune放大器分析器来查看Julia程序的运行情况。 这需要构建Julia软件包。 请参阅说明https://software.intel.com/en-us/blogs/2013/10/10/profiling-julia-code-with-intel-vtune-amplifier。