使用cython -a
,我发现for i in range(0, a, b)
语句作为python循环运行(cython -a
html输出中的黄色线条)。 i
,a
和b
为cdef
- 编辑为int64_t
。
然后我尝试了以前的#39;语法for i from 0 <= i < b by a
。从cython -a
的输出看,它似乎按预期编译得非常合理。
是否预期行为范围(0,a,b)未在此处优化,或者这是否与实现相关?
答案 0 :(得分:1)
Automatic range conversion。由于这种情况下的步骤是有符号类型,所以它不能,因此会回退到python循环。
请注意,目前即使类型为无符号,cython仍然会回退到python循环,这是一个(相当古老的)优秀的进一步优化,编译器可以做但不做。有关更多信息,请查看此票证: