在Julia

时间:2015-11-26 04:37:22

标签: types julia

当尝试编写类型稳定的代码,使用@code_warntype进行检查时,我应该只担心变量部分中没有任何AnyUnion,或者我也应该检查正文部?

3 个答案:

答案 0 :(得分:8)

根据您的julia版本,@code_warntype有时会标记某些无害的表达式。通过一些练习,您可以轻松识别这些表达式(例如,它们通常与模块/名称查找有关。)

Reza说,简单的路径是查看变量部分和函数的返回类型;如果您没有看到任何类型不确定的数量(AnyUnion),您可能无需担心。如果你想深入挖掘,开始尝试理解它标记的身体表情。对于学习,一个有用的事情是将结果与使用track-allocation获得的结果进行比较,因为真正的类型不稳定性与内存分配有关。

但是,我认为@code_warntype的问题已在当前的主人身上得到修复,因此无论如何,julia的下一版本应该更容易解释。

答案 1 :(得分:4)

通常,没有必要搜索 body 部分以获取更多所谓的非叶类型,因为code_warntype主要任务是为你做这份工作,(check source)。但是身体部分有关于非叶的使用位置和方式的更多信息。

参考文献:

    文档中的
  1. code_warntype(f, types)
  2. code_warntype(f, types)来源。

答案 2 :(得分:0)

@code_warntype还针对某些变量报告“ Core.NewVarNode”对象。我相信,如果不采取任何措施,这些有关额外内存分配的信息就不会在内部循环中受到欢迎,因为内部循环会频繁地产生内存分配。