簡體   English   中英

Python 3.7真的比python 3.6快嗎?

[英]Python 3.7 really faster than python 3.6?

我曾經在ubuntu中運行Python 3.6.7。 今天,我嘗試了全新的python 3.7.3,但我有點失望:在我看來3.7比3.6慢:

這兩個版本都取自Deadsnakes / ppa,當我運行Python基准套件時,許多測試中3.7應該比3.6快(dixit speed.python.org),我注意到了相反的情況:

python 3.6:

[ 1/47] 2to3...
INFO:root:Running `/home/elapouya/tmp/venv36/bin/python -u /home/elapouya/tmp/venv36/lib/python3.6/site-packages/performance/benchmarks/bm_2to3.py --output /tmp/tmp27lejbkn`
.....................
2to3: Mean +- std dev: 319 ms +- 5 ms
[ 2/47] chameleon...
INFO:root:Running `/home/elapouya/tmp/venv36/bin/python -u /home/elapouya/tmp/venv36/lib/python3.6/site-packages/performance/benchmarks/bm_chameleon.py --output /tmp/tmp_jvgzmw7`
.....................
chameleon: Mean +- std dev: 8.99 ms +- 0.13 ms
[ 3/47] chaos...
INFO:root:Running `/home/elapouya/tmp/venv36/bin/python -u /home/elapouya/tmp/venv36/lib/python3.6/site-packages/performance/benchmarks/bm_chaos.py --output /tmp/tmpbpea7n4x`
.....................
chaos: Mean +- std dev: 114 ms +- 2 ms
[ 4/47] crypto_pyaes...
INFO:root:Running `/home/elapouya/tmp/venv36/bin/python -u /home/elapouya/tmp/venv36/lib/python3.6/site-packages/performance/benchmarks/bm_crypto_pyaes.py --output /tmp/tmptbh2r8k1`
.....................
crypto_pyaes: Mean +- std dev: 103 ms +- 1 ms
[ 5/47] deltablue...
INFO:root:Running `/home/elapouya/tmp/venv36/bin/python -u /home/elapouya/tmp/venv36/lib/python3.6/site-packages/performance/benchmarks/bm_deltablue.py --output /tmp/tmpm_fyde6p`
.....................
deltablue: Mean +- std dev: 7.19 ms +- 0.12 ms[1/1] 
raytrace...
INFO:root:Running `/home/elapouya/tmp/venv36/bin/python -u /home/elapouya/tmp/venv36/lib/python3.6/site-packages/performance/benchmarks/bm_raytrace.py --output /tmp/tmpeaeg9hxq`
.....................
raytrace: Mean +- std dev: 536 ms +- 8 ms

python 3.7:

[ 1/47] 2to3...
INFO:root:Running `/home/elapouya/tmp/venv37/bin/python -u /home/elapouya/tmp/venv37/lib/python3.7/site-packages/performance/benchmarks/bm_2to3.py --output /tmp/tmp96xnk361`
.....................
2to3: Mean +- std dev: 349 ms +- 4 ms
[ 2/47] chameleon...
INFO:root:Running `/home/elapouya/tmp/venv37/bin/python -u /home/elapouya/tmp/venv37/lib/python3.7/site-packages/performance/benchmarks/bm_chameleon.py --output /tmp/tmpzj3vo0qn`
.....................
chameleon: Mean +- std dev: 11.7 ms +- 0.2 ms
[ 3/47] chaos...
INFO:root:Running `/home/elapouya/tmp/venv37/bin/python -u /home/elapouya/tmp/venv37/lib/python3.7/site-packages/performance/benchmarks/bm_chaos.py --output /tmp/tmp5nfno0s9`
.....................
chaos: Mean +- std dev: 132 ms +- 2 ms
[ 4/47] crypto_pyaes...
INFO:root:Running `/home/elapouya/tmp/venv37/bin/python -u /home/elapouya/tmp/venv37/lib/python3.7/site-packages/performance/benchmarks/bm_crypto_pyaes.py --output /tmp/tmpq3mv75iz`
.....................
crypto_pyaes: Mean +- std dev: 124 ms +- 2 ms
[ 5/47] deltablue...
INFO:root:Running `/home/elapouya/tmp/venv37/bin/python -u /home/elapouya/tmp/venv37/lib/python3.7/site-packages/performance/benchmarks/bm_deltablue.py --output /tmp/tmp01whaidm`
.....................
deltablue: Mean +- std dev: 8.93 ms +- 0.15 ms
[ 6/47] django_template...
[1/1] raytrace...
INFO:root:Running `/home/elapouya/tmp/venv37/bin/python -u /home/elapouya/tmp/venv37/lib/python3.7/site-packages/performance/benchmarks/bm_raytrace.py --output /tmp/tmpce_59p1p`
.....................
raytrace: Mean +- std dev: 603 ms +- 12 ms

我還嘗試編譯python 3.7.3源代碼(使用--enable-optimizations),但實際上並沒有更快。

我哪里錯了? 為什么在我運行的官方基准測試套件中,python3.7不會比speed.python.org說的快於3.6。

查看所有3.6和3.7版本的構建日志,發現3.6版本的CFLAGS中包含-O2,而3.7中沒有。 那可能就是差異。 在發現我作為項目基准的大型操作的性能急劇下降之后,我只需要在RPi上重新編譯3.7.3。

使用股票3.5.3,它可以在約139秒內完成10 ^ 6整數的基數運算。 全新安裝了3.7.3,使用--enable-optimizations更改為765秒。 將CFLAGS和config args匹配到3.5.3安裝后,排序時間降低到143秒。 我相信大部分原因是分別由於CFLAGS和config args中的-O2和--enable-computing-gotos造成的。

您可以通過下載3.7.3源代碼並使用-O2和--enable-computed-gotos進行altinstall來找到答案。

編輯:10 ^ 6整數,而不是10 ^ 7。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM