我对性能有疑问,无法找到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将如何做到这一点,似乎更快,但另一方面,我在重复我的代码!你知道吗
不,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,从而使分支预测保持一致。你必须自己发现并纠正这种行为。你知道吗
相关问题 更多 >
编程相关推荐