Cython for 循环转换
Cython for loop conversion
使用cython -a
,我发现一个for i in range(0, a, b)
语句是运行作为一个python循环(cython -a
[=27=中非常黄的线] 输出)。 i
、a
和 b
被 cdef
编辑为 int64_t
。
然后我尝试了 'old' 语法 for i from 0 <= i < b by a
。从 cython -a
的输出来看,它似乎按预期编译得非常好。
此处未优化 range(0, a, b) 是预期的行为,还是这与实现有关?
Automatic range conversion 仅在 cython 可以在编译时确定步骤的符号时应用。由于本例中的步骤是有符号类型,因此它不能返回到 python 循环。
请注意,目前即使类型是无符号的 cython 仍然会退回到 python 循环,这是一个(相当古老的)杰出的进一步优化,编译器可以做但没有做。查看这张票以获取更多信息:
使用cython -a
,我发现一个for i in range(0, a, b)
语句是运行作为一个python循环(cython -a
[=27=中非常黄的线] 输出)。 i
、a
和 b
被 cdef
编辑为 int64_t
。
然后我尝试了 'old' 语法 for i from 0 <= i < b by a
。从 cython -a
的输出来看,它似乎按预期编译得非常好。
此处未优化 range(0, a, b) 是预期的行为,还是这与实现有关?
Automatic range conversion 仅在 cython 可以在编译时确定步骤的符号时应用。由于本例中的步骤是有符号类型,因此它不能返回到 python 循环。
请注意,目前即使类型是无符号的 cython 仍然会退回到 python 循环,这是一个(相当古老的)杰出的进一步优化,编译器可以做但没有做。查看这张票以获取更多信息: