2011-09-10 50 views
1

我不擔心由我定義的函數,但內置函數或esp。一些來自進口模塊。基本上,這些建議是否仍然適用?python 3.2如何處理來自循環的函數調用?

http://wiki.python.org/moin/PythonSpeed/PerformanceTips#Avoiding_dots...

http://wiki.python.org/moin/PythonSpeed/PerformanceTips#Local_Variables

我覺得PyPy的JIT可以在這裏也幫了我,但我需要一個Linux集羣上運行的事情(我的源是Py3k的話)。

+0

是的,他們仍然適用。 – agf

+0

請注意,這些僅適用於CPython。例如,對於PyPy而言,它們可能處於輕微有用的地方,通過與真正有害的無關。 – fijal

回答

4

是的。確切的版本並不重要。這些優化都歸結爲最小化語言特性與語義的使用,這些特性可以爲一般情況提供簡單高效的實現(這是解釋器關心的一切,而JIT編譯器可以爲特定情況生成更好的代碼)。具體來說:

  • 屬性查找仍然遵循一個漂亮的花式算法,例如, (那些分期付款O(1),但大O不是所有東西),走了很長時間(好吧,不是那麼多的內置的)繼承鏈和調用其他描述符(屬性,獲取綁定方法)。變量(特別是本地的,見下文)查找在比較中是非常簡單的,並且除非所討論的對象已經在堆棧頂部,否則需要較少的字節碼指令。
  • 本地變量仍然可以在編譯時枚舉(允許使用堆棧進行有效的實現),而全局變量仍然可以隨時添加和刪除,任何人都可以引用模塊對象,甚至動態使用字符串(requring爲他們使用散列表)。
相關問題