Python性能 - 使用方法循环而不是循环变量的循环

2024-10-03 00:17:32 发布

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

我对性能有疑问,无法找到python在每种情况下的行为:

def something(object):
    if object== 'something':
        return 1
    else:
        return 0

方案1:

def something_bigger(list, object):
    total= 0
    for item in list:
        total+= something(object)

def something_bigger2(list, object):
    total= 0
    for item in list:
        total-= something(object)

方案2:

def something_bigger(list, object):
    total= 0
    something = something(object)
    for item in list:
        total+= something(object)

def something_bigger2(list, object):
    total= 0
    something = something(object)
    for item in list:
        total-= something(object)

这些例子很简单,毫无意义,但我的目标是了解python是否理解`something()总是返回相同的,并且不会重复if无穷的次数。你知道吗

选项二,不了解python将如何做到这一点,似乎更快,但另一方面,我在重复我的代码!你知道吗


Tags: inforreturnifobjectdef方案情况
1条回答
网友
1楼 · 发布于 2024-10-03 00:17:32

不,Python不是像Java或C应用程序(例如)那样编译的。一行代码只有在执行时才正确计算。你知道吗

我几个星期前问的这个问题可以详细说明 Python的核心区别: Why doesn't Python spot errors before execution?

这是一个不同的问题,当然,但jist是相同的。Python甚至不知道下一条指令是什么。另一方面,C或C++被编译成汇编指令列表。你知道吗

这就是为什么你需要一个解释器来运行脚本。你知道吗

你所描述的是分支预测。关于这个著名的问题有一个非常好的解释:

Why is it faster to process a sorted array than an unsorted array?

但Python不像C++那样编译成汇编。指令没有以足够原始的格式提供给CPU,从而使分支预测保持一致。你必须自己发现并纠正这种行为。你知道吗

相关问题 更多 >