java单机提升性能_老问题新测试:java和C单机性能比较

一篇博客文章对比了Java和C在不同场景下的性能,包括字符串哈希计算、素数筛选和虚拟方法调用。实验结果显示,在最新的x86平台上,Java在某些测试中与C相差无几,甚至在虚拟方法调用上表现出近乎无限的快速。这表明Java的性能并不逊色于C,有时甚至更快,挑战了传统观念中Java比C慢的看法。
摘要由CSDN通过智能技术生成

Java和C最大的不同是在于Java的可伸缩性Scalable,能够平滑发展到分布式云计算平台,通过云计算能够处理不断增长的业务访问量,这个代价过程是非常小容易的。

那么在单机环境下,Java过去一直被认为低于C程序,最近老外做了一个实验,进行了比较:

String Hash案例:

Complete C++ code: http://pastebin.com/d280c1cd4

Complete Java code: http://pastebin.com/m541c4655

主要核心程序如下,是一个循环:

int h=0;

for( int i=0; i

h = 31*h+str[i];

return h;

在新的x86上运行100 million 循环,结果如下:

> a.out 100000000

100000000 hashes in 5.636362 secs

> java str_hash 100000000

100000000 hashes in 5.745 secs

两者相差无多,据作者介绍,如果在老版本的gcc & Java比较,Java会比C快15%,但这次是C++ 要快2%。

筛选案例

Complete C++ code: http://pastebin.com/m3784c090

Complete Java code: http://pastebin.com/m4b414295

核心代码如下:

bool *sieve = new bool[max];

for (int i=0; i

sieve[0] = false;

sieve[1] = false;

int lim = (int)sqrt(max);

for (int n=2; n

if (sieve[n]) {

for (int j=2*n; j

sieve[j] = false;

}

}

测试结果:

> a.out 100000000

100000000 primes in 1.568016 secs

> java sieve 100000000

100000000 primes in 1.548 secs

Java要快些。

Profiling Enables Big Gains案例

Complete C code:

vcall.cpp http://pastebin.com/m70dbe7d6

vcall.hpp http://pastebin.com/m13055a8c

A.cpp http://pastebin.com/m5aa1b232

B.cpp http://pastebin.com/m2e46ec23

Complete Java code:

vcall.java http://pastebin.com/m149bbdf0

A.java http://pastebin.com/m2e33d6df

B.java http://pastebin.com/m2b1d75bb

核心代码是:

int sum=0;

for (int i = 0; i < max; i++)

sum += val(); // virtual callreturn sum;

在同样x86上测试结果:

> a.out 1000000000 0

1000000000 adds in 2.657645 secs

> java vcall 1000000000 0

1000000000 adds in 0.0 secs

Java几乎是无限地快,至少可以说明Java不比C慢,甚至在某些情况下快于C,那种认为java比C慢的观点应该扔到垃圾堆里去了。

原文:

[该贴被banq于2009-09-08 11:21修改过]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值