想知道做一次迭代对多次迭代的性能影响。我使用Python工作 - 我不确定这是否会影响答案。多次迭代的性能
考虑尝试对列表中的每个项目执行一系列数据转换。
def one_pass(my_list):
for i in xrange(0, len(my_list)):
my_list[i] = first_transformation(my_list[i])
my_list[i] = second_transformation(my_list[i])
my_list[i] = third_transformation(my_list[i])
return my_list
def multi_pass(my_list):
range_end = len(my_list)
for i in xrange(0, range_end):
my_list[i] = first_transformation(my_list[i])
for i in xrange(0, range_end):
my_list[i] = second_transformation(my_list[i])
for i in xrange(0, range_end):
my_list[i] = third_transformation(my_list[i])
return my_list
现在,除了可读性方面的问题,严格来说,在性能方面,对multi_pass来说one_pass是否有真正的优势?假设大多数工作发生在转换函数本身中,那么multi_pass中的每次迭代只需要大约1/3的时间呢?
如果大部分工作都发生在转换函数中,那么您已经回答了您自己的问题 - 单通方法没有效率优势。顺便说一句,如果有疑问,衡量! – user4815162342
顺便说一句,它可能应该是'xrange(len(my_list))',而不是减一。 'xrange'默认会产生关闭间隔。 – user4815162342
@ user4815162342 - 你对xrange()是正确的。进行了更正。 –