Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 乘法或赋值给变量的速度更快吗?_Python_Performance_Python 3.x_Processing Efficiency - Fatal编程技术网

Python 乘法或赋值给变量的速度更快吗?

Python 乘法或赋值给变量的速度更快吗?,python,performance,python-3.x,processing-efficiency,Python,Performance,Python 3.x,Processing Efficiency,假设我有以下代码: foo = int(input("Number")) bar = int(input("Number")) for number in range(0, 10): if foo*bar > 0: print("hello") foo = int(input("Number")) bar = int(input("Number")) top = foo*bar for number in range(0, 10): if top >

假设我有以下代码:

foo = int(input("Number"))
bar = int(input("Number"))
for number in range(0, 10):
    if foo*bar > 0:
        print("hello")
foo = int(input("Number"))
bar = int(input("Number"))
top = foo*bar
for number in range(0, 10):
    if top > 0:
        print("hello")
但是,我也可以有以下代码:

foo = int(input("Number"))
bar = int(input("Number"))
for number in range(0, 10):
    if foo*bar > 0:
        print("hello")
foo = int(input("Number"))
bar = int(input("Number"))
top = foo*bar
for number in range(0, 10):
    if top > 0:
        print("hello")
哪一个更快

使用Python3


我意识到这个问题是相似的,然而,它是针对Java的,Python可能是不同的。另外,他们问的是内存效率,而我问的是处理器效率。

为了让我们可以结束这一切,下面是答案。在我的电脑上使用timeit我们得到的结果是

每次在循环中执行乘法:

$ python -m timeit 'for _ in xrange(10): 10 * 20 > 0'
1000000 loops, best of 3: 1.3 usec per loop
在循环外执行乘法:

$ python -m timeit 'foo = 10 * 20
> for _ in xrange(10): foo > 0'
1000000 loops, best of 3: 1.07 usec per loop
在循环外部运行乘法而不是在循环内部运行乘法可以节省0.23微秒——大约18%

请注意,我在运行OS X 10.11.0的2007 iMac 2.4 GHz上使用的是Python 2.7.10,开发者预览版7。您的确切结果可能因Python版本、硬件、操作系统版本、CPU。。。在我的例子中,您运行的其他应用程序只是带有3个选项卡的Safari。但是您应该可以比较地看到,与重复执行相同的操作并每次丢弃结果相比,将数字存储在变量中是微不足道的


在未来,OP,请使用timeit。它内置于Python中,用于执行类似这样的性能检查。请参阅此处的文档:注意,不要害怕文档。读它们。如果您有问题,请询问堆栈溢出问题-您可能会在文档中发现需要改进/澄清的不足之处。或者至少,你的问题会得到回答,你以后会比以前知道得更多。

我看不出你在哪里进行多次除法……为什么不计时并找出答案呢?使用Python 3这会导致一个类型错误,你不能对字符串进行乘法。除此之外,在慢速显示上,first会更快,因为它只打印一个Hello。所以为什么不显示代码,这是正确的,更真实?我一直都看到这一点。有人问像is++i比i++快的问题,如果它真的有区别的话,就像一纳秒,他们在一个循环中用一个print语句来做,以毫秒为单位。所以打印占99.99999%的时间,但他们没有想到这一点。他们把注意力集中在蚊虫的睫毛上。我真的不应该一开始就问,因为答案是直观的,但我想我想知道是不是。我并不害怕文档,因为我觉得它们很难阅读,我的错误是先在这里发布而不是四处查看。时间它似乎很有用-我只是在这个问题上测试了它,结果似乎没有结论,但这与问题的这个状态无关。总的来说,我的代表在这个问题上受到了伤害,但我学到了一些。谢谢你们,谢谢你们做了测试,完成了这个。