在python語言中,'>>'運算符和'/'運算符在執行時間方面有什麼區別,當我們將任何整數除以'2'的倍數並且爲什麼?>>和/ in python language
回答
默認的Python實現的開銷非常大,以至於如果你關心這樣的事情,它是錯誤的語言。 These slides from Unladen Swallow presentation相當亮...
事實上,>>
將比/
更快。但這不是來自分區的花費,而是來自於確定你是要劃分一個浮點數還是一個整數的開銷!如果改爲由//
分(假定INT),這將是一樣快的>>
...
中相同的功能。但根據以下分析,'//'比較慢, >>'in python 2.7.' >>> timeit.timeit('a = 1000000000000000; a // 2') 0.3532679080963135 >>> timeit.timeit('a = 1000000000000000; a >> 1') 0.2281970977783203 ' – 2012-03-25 17:07:27
>>
只適用於整數。 /
的行爲取決於您使用的是2.x還是3.x(或從__future__
導入division
)。所以重要的區別是不是速度相關。
是的,有:
>>> timeit.timeit('a = 32; a/2')
0.32588499376317426
>>> timeit.timeit('a = 32; a >> 1')
0.27532270162828
的原因似乎是顯而易見的 - 對位操作更快。
無論如何,這種差異是不是使用>>
而不是/
進行劃分的原因。
嗯,幾乎可以肯定的是,當事先不知道類型時,位移會更快。但我們可能會很聰明。讓我們來看看:
In [11]: 2**20-37
Out[11]: 1048539
In [12]: timeit 1048539 >> 14
10000000 loops, best of 3: 29 ns per loop
In [13]: 2**14
Out[13]: 16384
In [14]: timeit 1048539 /16384
10000000 loops, best of 3: 72.2 ns per loop
In [15]: timeit 1048539 //16384
10000000 loops, best of 3: 29.1 ns per loop
注意最後一種情況:如果我們專注於與//
整數,它幾乎完全一樣!
特別是在Python中,事先不知道類型,否則很難優化這類東西。另一方面,這意味着/
也可以與非整數一起使用 - 這可能是一個錯誤或功能,具體取決於您實際正在做什麼。
- 1. $ this-> load-> helper('language');不起作用
- 2. ASP新手。<%@ Page Language =「」%>
- 3. Pi in C language
- 4. <string> True與True和<string> in Python
- 5. sizeof in D language
- 6. Fibonacci in Assembly Language
- 7. 將<language>項目/模塊轉換爲<other language>項目/模塊
- 8. Select language in Hypertable in Java
- 9. 實施>> = in newtype
- 10. MatLab,missing - >> in command line
- 11. <noscript> in <head>
- 12. |,>和<in numpy datatype
- 13. iview-ui in English language?
- 14. 如何在<Script LANGUAGE =「JScript.Encode」>中解碼javascript代碼>
- 15. PHP <SCRIPT LANGUAGE =「PHP」>標籤
- 16. Python和Pandas:XML - > DataFrame
- 17. C++ map <int, int> in python
- 18. uWSGI和Python> 3.4
- 19. Issues with character inflating in android webView in chienese language
- 20. redirect_to:action =>:index in Rspec
- 21. 解釋 - > in PHP
- 22. <canvas> in greasemonkey
- 23. <Binary> in sql
- 24. ListView in <include>
- 25. Python - > Py4j - > Spark - > Cassandra
- 26. <out T> vs <T> in Generics
- 27. <img> in <canvas>未顯示
- 28. <input></input> in innerHTML not working
- 29. Transpose ArrayList <ArrayList <String>> in Java
- 30. Yii :: app() - > user-> setState in yii?
如果它很重要(提示:沒有),那麼最好寫C。 – delnan 2012-03-25 16:50:02
如果你在乎差異,不要使用Python。此外,這可能是特定於CPU的。 – millimoose 2012-03-25 16:51:25
其實我剛剛解決了一個spoj問題,其中執行時間有所不同,所以我很好奇,知道它具有與C – 2012-03-25 16:52:24