啥是pypyhtml
簡單地說, PyPy 是用 Python 語言寫了一個工具, 將 Python 代碼成 C, .NET, Java 等語言和平臺的代碼. PHP 也有相似的項目 – HipHop-PHP, 把 PHP 代碼轉成 C++ 代碼.python
爲何要將一種語言轉成另外一種語言? 首先是目標語言可能在性能(如C語言)和/或跨平臺(如 .NET, Java)等方面具備優點. 其次, 在轉換的過程, 能夠進行代碼優化或加入新技術, 好比 PyPy 應用的 Just-in-Time(JIT) 技術, 能讓 Python (事實上是轉換後的目標代碼)的執行速度更快.flask
反正是性能很好的東西,可是也有很多的侷限性。服務器
我們就不用源碼安裝了,最新的版本是2.2.1,可是看老外那邊用2.0的仍是比較的多。 有須要的朋友能夠下載2.2.1app
地址:http://pypy.org/download.htmlsocket
簡單的跑一下:ide
import time #xiaorui.cc #rfyiamcool@163.com def test(n,m): m=m vals = [] keys = [] for i in xrange(m): vals.append(i) keys.append('a%s'%i) d = None for i in xrange(n): d = dict(zip(keys, vals)) return d if __name__ == '__main__': st = time.time() print test(1000000,100) print 'use:', time.time() - st
看看pypy和純python執行的效率比較 !工具
發現一個小規律,在小數據的時候,貌似pypy比率很大,可是運算多了後,貌似結果差距不算大。 性能
這是用純python執行的結果。測試
import time from time import clock #xiaorui.cc def check(num): a = list(str(num)) b = a[::-1] if a == b: return True return False def main(): all = range(1,10**7) for i in all: if check(i): if check(i**2): print(i,i**2) if __name__ == '__main__': start = clock() main() end = clock() print (end-start)
結果打出來是這樣的 ~
root@YZSJHL1-131:~$python g2.py (1, 1) (2, 4) (3, 9) (11, 121) (22, 484) (101, 10201) (111, 12321) (121, 14641) (202, 40804) (212, 44944) (1001, 1002001) (1111, 1234321) (2002, 4008004) (10001, 100020001) (10101, 102030201) (10201, 104060401) (11011, 121242121) (11111, 123454321) (11211, 125686521) (20002, 400080004) (20102, 404090404) (100001, 10000200001) (101101, 10221412201) (110011, 12102420121) (111111, 12345654321) (200002, 40000800004) (1000001, 1000002000001) (1001001, 1002003002001) (1002001, 1004006004001) (1010101, 1020304030201) (1011101, 1022325232201) (1012101, 1024348434201) (1100011, 1210024200121) (1101011, 1212225222121) (1102011, 1214428244121) (1110111, 1232346432321) (1111111, 1234567654321) (2000002, 4000008000004) (2001002, 4004009004004)
不知道是否是服務器的性能不夠高,找了臺所謂高性能的服務器再跑跑: (公司剛買了一堆的華爲服務器,挺好奇的,華爲竟然也出服務器了,找了臺沒上線的服務器測試下)
我暈,真垃圾的呀 ! 看來這個機型適合作雜七雜八的業務的機型 !
python的由於是單核跑的,因此和cpu的主頻有關聯的 !
有老外說 gevent和pypy能夠更好的提升效率,在pypy層次下也能夠調用協程。等有結果在分享給你們!
pypy對我來講,最大的缺點就是他的庫支持的仍是少,尤爲是socket級別的包,很多的bug。 就算是最普遍的Django也是存在兼容的 !
root@YZSJHL1-131:~$pypy myapp.py Traceback (most recent call last): File "app_main.py", line 72, in run_toplevel File "myapp.py", line 2, in <module> from flask import Flask ImportError: No module named flask root@YZSJHL1-131:~$
好,先說到這裏 !