Python性能:重复计算与临时变量

2024-06-17 08:25:23 发布

您现在位置:Python中文网/ 问答频道 /正文

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更少。我说得对吗


1条回答
网友
1楼 · 发布于 2024-06-17 08:25:23

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非常快,这是在固定时间内完成的

虽然第二个代码应该稍微快一点,但这种微优化可能不会对大型代码产生重大影响。请记住,可读代码通常更易于维护、改进和优化

相关问题 更多 >