全方位测试 Python、Java运行速度比较(1)
全方位测试 Python、Java运行速度比较(1)
在正式展开我的观点之前,我想说这只是表达我的个人观点,并非代表科学和权威的论断。我这样做,只是为了给学习编程语言的人们一个参考。
对于初学编程语言的新人而言,如何选择编程语言,首先考虑的问题是哪种语言的运行速度更快。Python 和Java 同是两大面向对象的语言,在这里我对二者的运行速度做了实例演示。
针对不同功能和模块的测试,我分别对Java 和Python 写了功能相同的测试代码,并各自反复测试了三次,取了平均值。结果如下:
Test |
Java |
Python |
Comparison |
Standard Output |
138.85 |
30.58 |
Python 4.5X Faster than Java |
Hashtable |
17.0 |
8.22 |
Python 2X Faster than Java |
I/O |
56.72 |
47.36 |
Python 1.2X Faster than Java |
List |
5.94 |
14.32 |
Java 2.4X Faster than Python |
Native Methods |
2.475 |
7.92 |
Java 3.2X Faster than Python |
Interpreter Initialisation |
0.25 |
0.04 |
Python 6.3X Faster than Java |
Object Allocation |
23.65 |
211.11 |
Java 8X Faster than Python |
Interpreter Speed |
0.43 |
2.29 |
Java 5.3X Faster than Python |
时间的单位是秒
再一次,我要说这只是在我的电脑下的大概时间。我的Java (JDK 1.1.7B, blackdown),我的系统(Debian GNU Linux 2.2),我的 (Python 1.5.2) 。
Test-By-Test
ConsoleTest | |
Python |
Java |
for x in xrange(1000000): print x |
public class ConsoleTest { public static void main(String[] args) { for (int i = 0; i < 1000000; i++) { System.out.println(i); } } } |
Hashtest | |
Python |
Java |
for i in xrange(1000): x={} for j in xrange(1000): x[j]=i x[j] |
import java.util.Hashtable; public class HashTest { public static void main(String[] args) { for (int i = 0; i < 1000; i++) { Hashtable x = new Hashtable(); for (int j = 0; j < 1000; j++) { x.put(new Integer(i), new Integer(j)); x.get(new Integer(i)); } } } } |
IOTest | |
Python |
Java |
f=open('scratch','wb') for i in xrange(1000000): f.write(str(i)) f.close() |
import java.io.*; public class IOTest { public static void main(String[] args) { try { File f = new File("scratch"); PrintWriter ps = new PrintWriter(new OutputStreamWriter (new FileOutputStream(f))); for (int i = 0; i < 1000000; i++) { ps.print(String.valueOf(i)); } ps.close(); } catch(IOException ioe) { ioe.printStackTrace(); } } } |
ListTest | |
Python |
Java |
for i in xrange(1000): v=['a','b','c','d','e','f','g'] for j in xrange(1000): v.append(j) v[j] |
import java.util.Vector; public class ListTest { public static void main(String[] args) { for (int i = 0; i < 1000; i++) { Vector v = new Vector(); v.addElement("a"); v.addElement("b"); v.addElement("c"); v.addElement("d"); v.addElement("e"); v.addElement("f"); v.addElement("g"); for (int j = 0; j < 1000; j++) { v.addElement(new Integer(j)); v.elementAt(j); } } } } |
评论关闭