Py vs Perl 运行
{{{俊杰蔡 <[email protected]> reply-to [email protected], to [email protected], date Thu, Apr 3, 2008 at 5:50 PM subject [CPyUG:45860] }}} [http://groups.google.com/group/python-cn/browse_thread/thread/4e4eb6d67a867c21/8b346859a4c96e29#8b346859a4c96e29 一段python程序的效率问题]
- 从以下对比得出
- (a)random.random()函数比random.randrange()函数快。
- (b)xrange不一定比range快。
- (c)使用StringIO缓存全部内容,一下子写也不一定快。
- (d)write() 块写效率会提高。
- (e)print 到文件句柄 写效率也不错高
- (f)脚本越短,引用的模块越少效率好
time vs 0.1
attachment:vs-0.1.png
5" random.pl
use strict; open (WW,"> 500000") or die "$!"; foreach(1..5000000){ my $i = int(rand 10000000) % 3; print WW $i."\n"; } close WW;
31" random.py
time vs 0.2
attachment:vs-0.2.png
48" random0.2.py
1 import cStringIO as StringIO
2
3 import random
4 import time
5
6 __revision__ = '0.2'
7
8 def test():
9 fh = open("test_cjj0.2","w")
10 output = StringIO.StringIO()
11
12 for i in xrange(5000000):
13
14 data = random.randrange(1000000,9999999,1)
15 yu = data % 3
16 print >>output, yu
17
18 fh.write(output.getvalue())
19
20 fh.close()
21
22 if __name__ == "__main__" :
23 test()
time vs 0.3
attachment:vs-0.3.png
33" random0.3.py
time vs 0.4
attachment:vs-0.4.png
27" random0.4.py
time vs 0.5
attachment:vs-0.5.png
51" random0.5.py
time vs 0.6
attachment:vs-0.6.png
26" random0.6.py
time vs 0.7
attachment:vs-0.7.png
10" random0.7.py
time vs 0.8
attachment:vs-0.8.png
5" random0.8.py
time vs 0.9
attachment:vs-0.9.png
15~11" random0.9.py
1 from random import random
2 __revision__ = '0.9'
3
4 def test():
5 five_million = 5000000
6 fh = open("test_cjj0.9","w")
7 for i in xrange(five_million):
8 data = int(random()*(9999999))
9 yu = data % 3
10 fh.write('%d\n' % yu)
11 fh.close()
12
13 if __name__ == "__main__" :
14 try:
15 import psyco
16 psyco.full()
17 except ImportError:
18 pass
19 test()
time vs 1.0
attachment:vs-1.0.png
15~11" random1.0.py
1 from random import random
2 __revision__ = '0.9'
3
4 def test():
5 five_million = 5000000
6 fh = open("test_cjj0.9","w")
7 for i in xrange(five_million):
8 data = int(random()*(9999999))
9 yu = data % 3
10 fh.write('%d\n' % yu)
11 fh.close()
12
13 if __name__ == "__main__" :
14 try:
15 import psyco
16 psyco.full()
17 except ImportError:
18 pass
19 test()
反馈
创建 by -- ZoomQuiet [DateTime(2008-04-03T13:26:48Z)]