- 論壇徽章:
- 1
|
原帖由 蘭花仙子 于 2007-1-22 15:07 發(fā)表
那說(shuō)明Perl還是快不少,
是的,很多情況下未優(yōu)化的python是不如perl快,不過(guò)通常這并不會(huì)成為問(wèn)題,畢竟兩種解釋性語(yǔ)言都不是以性能著稱。但就性能來(lái)說(shuō)python也有很多優(yōu)勢(shì),例如前面提到過(guò)的c模塊。對(duì)于性能關(guān)鍵的代碼塊,可以考慮用C編寫,或者用pyrex來(lái)寫。還有用psyco優(yōu)化有時(shí)會(huì)取得非常好的效果。此外還有一些python本身的優(yōu)化措施?次覝y(cè)試的情況:
- $ cat t1.pl
- #!/usr/bin/perl
- $i=0;
- while ($i<10000000) {
- $i+=1;
- }
- $ time ./t1.pl
- real 0m1.888s
- user 0m1.884s
- sys 0m0.000s
復(fù)制代碼
同樣的perl代碼,作為基準(zhǔn)吧。
- $ cat t1.py
- #!/usr/bin/python
- i=0
- while i<10000000:
- i+=1
- $ time ./t1.py
- real 0m3.704s
- user 0m3.696s
- sys 0m0.004s
復(fù)制代碼
未優(yōu)化python代碼,此處比perl的慢一倍。
- $ cat t2.py
- #!/usr/bin/python
- def loopit():
- for i in xrange(10000000):
- i+=1
- loopit()
- $ time ./t2.py
- real 0m1.772s
- user 0m1.760s
- sys 0m0.012s
復(fù)制代碼
這個(gè)只用python語(yǔ)言本身的優(yōu)化,速度已經(jīng)反超perl。
- $ cat t3.py
- #!/usr/bin/python
- from psyco import full
- full()
- def loopit():
- i=0
- while i<10000000:
- i+=1
- loopit()
- $ time ./t3.py
- real 0m0.068s
- user 0m0.060s
- sys 0m0.008s
復(fù)制代碼
這個(gè)又加入了psyco優(yōu)化,此處性能幾乎提高兩個(gè)量級(jí)。
這個(gè)試?yán)轻槍?duì)整數(shù)的算術(shù)(加法)運(yùn)算,只是管中之一斑而已,遠(yuǎn)不能涵蓋兩種語(yǔ)言的性能全貌。不過(guò)我可沒(méi)有時(shí)間去做全面的評(píng)測(cè)。感興趣的話可以到網(wǎng)上搜索或自己去做。
小弟是perl和python都學(xué)過(guò),不過(guò)都淺嘗輒止,只得一點(diǎn)皮毛。我并不想爭(zhēng)論兩種語(yǔ)言的短長(zhǎng),事實(shí)上兩者我都喜歡。只是看到關(guān)于性能的話題,就自己知道的一點(diǎn)忍不住說(shuō)兩句,不對(duì)的地方請(qǐng)包涵指正。^_^
----------------------
hehe, 忘了說(shuō)測(cè)試的環(huán)境了:
Ubuntu6.10 on T2300E 512M memory
perl 5.8.8
python 2.4.4c1
python-psyco 1.5-3
[ 本帖最后由 woodie 于 2007-1-28 17:47 編輯 ] |
評(píng)分
-
查看全部評(píng)分
|