引子:
大家一值都说Java性能比C++要差很多,因为Java有虚拟机,理论上来说是这样,但实际如何了?
测试方法:
假设一般程序中整形变量操作的概率是double类型的100倍
Java代码:
package com.mydomain.ewanbao;
import java.util.Arrays;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
public class Test{
public static void main(String[] args){
int a = 2500;
int b = 600;
int c;
double d = 2500.0;
double e = 600.0;
double f;
System.out.println("started at :" + new Date());
for(int i=0; i<10000; i++){
for(int j=0; j<1000000; j++){
c = a + b;
c = a - b;
c = a * b;
c = a / b;
}
for(int k=0; k<10000; k++){
f = d + e;
f = d - e;
f = d * e;
f = d / e;
}
}
System.out.println("stoped at :" + new Date());
}
}
C++代码:
#include
#include
int main()
{
time_t timep;
struct tm *p;
time(&timep);
p=localtime(&timep);
printf("%d:%d:%d\n", p->tm_hour, p->tm_min, p->tm_sec);
int a = 2500;
int b = 600;
int c;
double d = 2500.0;
double e = 600.0;
double f;
for(int i=0; i<10000; i++)
{
for(int j=0; j<1000000; j++)
{
c = a + b;
c = a - b;
c = a * b;
c = a / b;
}
for(int k=0; k<10000; k++)
{
f = d + e;
f = d - e;
f = d * e;
f = d / e;
}
}
time(&timep);
p=localtime(&timep);
printf("%d:%d:%d\n", p->tm_hour, p->tm_min, p->tm_sec);
return 0;
}
测试环境:
本人笔记本。
Java测试结果:160s
C:\ewanbao\workspace\TestProject\bin>java -cp C:\ewanbao\workspace\TestProject\bin com.mydomain.ewanbao.Test
started at :Thu Jul 21 09:11:21 CST 2011
stoped at :Thu Jul 21 09:14:01 CST 2011
C++测试结果:172s
C:\ewanbao\VISUALCPLUSPLUS\Test\Debug>Test.exe
9:19:43
9:22:35
结论:
单测试结果看,纯计算而言,Java不见得比C++慢