大家都说,Java性能现在已经很好啦,不能再抱着老观点去看它啦,甚至也有人说,Java性能已经超越C++了。我也相信Java虚拟机在不断优化,性能有很大提高,但要说它能超越C++,我想还是有相当难度的,当然,不排除在某些特殊情况下它能超越C++。不过眼见为实,耳听为虚,不想看那些所谓权威机构的测试结果,就自己动手吧,写几行代码权当消遣。呵呵,网上已经有人贴了这类测试代码,拿来改一下,我们就简单的计算平方和然后再取模就是了。代码写完,可以跑起来看看了。哦,我们的环境是:
Windows XP Professional Service Pack 3
Intel Core2 Duo CPU T7300 @ 2.00GHz
Visual C++ 2008 Express Edition
java version "1.6.0_10-beta"
可以看到,对我的测试例而言,两者性能确实相差不大了,Java只比C++逊色那么一点点,对大多数应用而言,这点性能损失确实可以忽略不计了。
声明一下,测试结果严重依赖于测试用例,所以我的测试也不一定具有代表性,大家看看就好,不用太认真,:)
TimeRecorder() { Start(); }
void Start() { m_start = GetTickCount(); }
void Stop() { m_end = GetTickCount(); }
double GetInterval() { return (m_end - m_start)/1000.0; }
double compute(int maxVal, int modNum)
for (int i = 1; i < maxVal; i++)
// 有些ugly, 不过不加此句的话上面的计算过程会被完全忽略掉, 运行时间为0,
return timer.GetInterval();
int _tmain(int argc, _TCHAR* argv[])
for (int i = 100000; i < 1000000; i += 100000)
for (int j = 100000; j < 1000000; j += 100000)
public class GeneratePrimes
public static double compute(int maxVal, int modNum)
long start = System.currentTimeMillis();
for (int i = 1; i < maxVal; i++)
return (System.currentTimeMillis() - start)/1000.0;
public static void main(String args[])
for (int i = 100000; i < 1000000; i += 100000)
for (int j = 100000; j < 1000000; j += 100000)
System.out.println(time);
public static int g_result;
本文转自Intel_ISN 51CTO博客,原文链接:http://blog.51cto.com/intelisn/130677,如需转载请自行联系原作者