似乎喜歡一個漂亮的可以忽略不計的速度向我走來:
> python -m timeit 'a = 50; b = a*12-1; c = a*b; c; c*100+10; c/100+20;'
1000000 loops, best of 3: 0.27 usec per loop
> python -m timeit '50*(50*12-1); 50*(50*12-1) * 100 + 10; 50*(50*12-1)/100 + 20'
1000000 loops, best of 3: 0.218 usec per loop
分配稍高於不斷重新計算速度較慢,但因爲korylprince在評論中聲明,分配將導致更容易閱讀代碼。
編輯:我想這是gnibbler在評論的意思,但它仍然比較慢:
> python -m timeit 'def x(): a = 50; b = a*12-1; c = a*b; c; c*100+10; c/100+20;' 'x()'
1000000 loops, best of 3: 0.428 usec per loop
EDIT2:其實,這是什麼gnibbler在評論意思,區別還是negligle。關於使用更可讀的評論仍然存在:
> python -m timeit -s 'def x(): a = 50; b = a*12-1; c = a*b; c; c*100+10; c/100+20;' 'x()'
1000000 loops, best of 3: 0.367 usec per loop
> python -m timeit -s 'def x(): 50*(50*12-1); 50*(50*12-1) * 100 + 10; 50*(50*12-1)/100 + 20' 'x()'
1000000 loops, best of 3: 0.278 usec per loop
你是在談論重複表達式只涉及文字(即固有常數值),就像你上面的例子? –
如果它使您的代碼更易於使用更多變量並且不會使用基準測試產生顯着差異,那麼請使用更具可讀性的代碼。除非你做了非常複雜的計算,否則你可能無法分辨其中的差異。 – korylprince