Cython for循环转换

时间:2015-03-10 12:49:24

标签: python cython

使用cython -a,我发现for i in range(0, a, b)语句作为python循环运行(cython -a html输出中的黄色线条)。 iabcdef - 编辑为int64_t

然后我尝试了以前的#39;语法for i from 0 <= i < b by a。从cython -a的输出看,它似乎按预期编译得非常合理。

是否预期行为范围(0,a,b)未在此处优化,或者这是否与实现相关?

1 个答案:

答案 0 :(得分:1)

仅当cython可以在编译时确定步骤的符号时,才会应用

Automatic range conversion。由于这种情况下的步骤是有符号类型,所以它不能,因此会回退到python循环。

请注意,目前即使类型为无符号,cython仍然会回退到python循环,这是一个(相当古老的)优秀的进一步优化,编译器可以做但不做。有关更多信息,请查看此票证:

http://trac.cython.org/ticket/546