2024-06-17 08:25:23 发布
网友
python是否重新计算代码中的每个重复表达式? 例如
a = [1,23,45,45,456,34] b = len(a) + 213 c = len(a) + 3432
性能不同于
a = [1,23,45,45,456,34] l = len(a) b = l + 213 c = l + 3432
我猜第二个使用更多的内存(存储l),但cpu更少。我说得对吗
Does python recalculate every repeating expression in code?
它在语言规范中未指定。事实上,这在很大程度上取决于Python实现。主流Python实现称为CPython,它会重新计算表达式。由于实时编译,PyPy(一种关注性能的替代实现)通常不会在代码的热点部分重新计算表达式。Python还有许多其他的实现(例如Pyston、Jython、IronPython),每个实现的行为都不同
I would guess second one uses more memory (to store l) but less cpu.
是的,但是差异实际上是微不足道的,并且仍然取决于所使用的Python实现(例如,在这种情况下,PyPy可能不需要更多内存)。请注意,在list上调用len非常快,这是在固定时间内完成的
list
len
虽然第二个代码应该稍微快一点,但这种微优化可能不会对大型代码产生重大影响。请记住,可读代码通常更易于维护、改进和优化
它在语言规范中未指定。事实上,这在很大程度上取决于Python实现。主流Python实现称为CPython,它会重新计算表达式。由于实时编译,PyPy(一种关注性能的替代实现)通常不会在代码的热点部分重新计算表达式。Python还有许多其他的实现(例如Pyston、Jython、IronPython),每个实现的行为都不同
是的,但是差异实际上是微不足道的,并且仍然取决于所使用的Python实现(例如,在这种情况下,PyPy可能不需要更多内存)。请注意,在
list
上调用len
非常快,这是在固定时间内完成的虽然第二个代码应该稍微快一点,但这种微优化可能不会对大型代码产生重大影响。请记住,可读代码通常更易于维护、改进和优化
相关问题 更多 >
编程相关推荐