python做爲一個動態語言, 自己學習曲線比較平滑, 效率相比起來會比c++和java低一些. 腳本語言都是運行時編譯的, 這個對於效率的影響是很是大的.html
我借用參考1的代碼, 加了點代碼import timejava
import time class Timer(object): def __init__(self): pass def __enter__(self): self.start = time.time() def __exit__(self, exception_type, exception_val, trace): print "elapsed:", time.time() - self.start # case 1 def main(): for _ in xrange(10 ** 8): pass with Timer(): main() # case 2 with Timer(): for _ in xrange(10 ** 8): pass
代碼很簡單, 就是循環10**8次, 兩者的區別是, 一個是直接循環, 另一個是封裝成一個main函數, 運行結果以下python
elapsed: 3.53965115547 elapsed: 5.47090697289
封裝成函數的要比直接循環會快不少. 我不是很清楚這其中具體的緣由, 這裏我根據我的的理解, 解釋一下, 純屬我的意見.c++
python運行時編譯(JIT), 封裝成函數的這個能夠總體編譯, 解釋器能夠針對函數做編譯後的優化, 直接循環的, 沒法做編譯後優化, 多是這個緣由致使了兩者性能的差別.shell
python的性能優化方法有不少種, 最簡單的方式是用更快的python解釋器, python是有多種實現的, 官方提供的是CPython, 此外還有Jython(jvm的實現), IronPython(.Net的實現), pypy(純python實現的), stackless python等不少種實現.性能優化
pypy是一個性能不錯的解釋器, 相同的例子, 在個人機器上使用pypy的運行結果以下less
elapsed: 0.117020130157 elapsed: 0.501815080643
這個的性能提高仍是很是明顯的, pypy是你們能夠考慮的一個解釋器.jvm
水平有限, 歡迎拍磚!函數
參考性能