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<len; 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<max; i++) sieve[i] = true; sieve[0] = false; sieve[1] = false; int lim = (int)sqrt(max); for (int n=2; n<lim; n++) { if (sieve[n]) { for (int j=2*n; j<max; j+=n) 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 call return 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慢的观点应该扔到垃圾堆里去了。
原文:
Java vs C performance... again...
分享到:
相关推荐
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
性能测试是评估软件系统在高负载或大数据量下的性能表现的过程。以下是对各个知识点的详细说明: 1. **TPS(Transactions Per Second)**:TPS代表每秒事务数,是衡量系统处理能力的重要指标,表示系统在单位时间内...
- Jenkins、GitLab CI/CD等工具用于自动化构建、测试和部署,确保分布式系统的快速迭代和稳定性。 8. **监控与日志管理** - ELK Stack(Elasticsearch、Logstash、Kibana)组合提供了强大的日志管理和分析能力。 ...
Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证...
Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证...
SQLite是一款轻量级的开源关系型数据库,它无需单独的服务器进程,可以直接嵌入到Java、C、Python等多语言的应用程序中。在Java中,我们通常使用SQLite JDBC驱动来与SQLite数据库进行交互,这就是"sqlite驱动 java...
14. **扩展性与弹性**:设计时考虑到未来可能的扩展,比如水平扩展(增加服务器)、垂直扩展(提升单机性能)等。使用云服务以实现弹性伸缩。 15. **运维自动化**:通过配置管理工具(如Ansible、Chef)实现环境...
总结来说,Windows上搭建ActiveMQ单机版需要安装JDK、解压ActiveMQ二进制包、配置和启动服务,然后通过Web管理界面进行管理和测试。理解`activemq.xml`配置文件的结构和内容,以及熟悉ActiveMQ的工作原理,将有助于...
- 测试比较了TigerGraph、Neo4j和Titan的数据加载和查询性能。 - 测试中使用了多种数据集,包括graph500-22和twitter_rv等合成和真实数据集。 - 硬件平台采用了Amazon EC2的C3.8xlarge实例类型,提供32个vCPU、...
易买网电商项目是一个基于Java技术构建的在线购物平台,数据集、集群和单机环境的设置是该项目的重要组成部分。这个压缩包包含了运行该项目所需的全部资源,特别是`war`包,它是Web应用程序的归档文件,用于在Java...
总的来说,Windows版本的单机Solr为开发者和管理员提供了一个便捷的平台,用于在本地进行搜索服务的开发、测试和调试。通过深入学习和实践,你可以充分利用Solr的强大功能,为你的应用构建高效、灵活的全文检索解决...
TPC-C规范通过模拟商品销售过程中的五种典型事务——NewOrder、Payment、OrderStatus、Delivery和StockLevel,来测量系统的处理能力,主要指标是每分钟处理的新订单数(tpmC)。本文将详细介绍如何在单机环境下,...
通常,毕业设计要求学生综合运用所学知识,解决一个实际问题,因此这个源码可能包含了较为全面的C语言编程技巧,以及游戏设计和AI算法的应用。 【标签解析】 标签中提到了“计算机网络”、“毕业设计”、“C语言”...
FastDFS是一个基于C语言开发的分布式文件系统,它对文件进行管理,包括文件存储、文件同步、文件访问(文件上传、文件下载)等功能,解决了大容量存储和负载均衡的问题。FastDFS有两个主要组件:Tracker服务器和...
Impala 是 Cloudera 提供的一款高效率的 SQL 查询工具,提供实时的查询效果,官方测试性能比 Hive 快 10 到 100 倍,其 SQL 查询比 SparkSQL 还要更加快速,号称是当前大数据领域最快的查询 SQL 工具。Impala 是参照...
- 设置默认JDK:`sudo update-alternatives --install /usr/lib/jvm/java java/usr/lib/jvm/java-7-sun/bin/java 300` 和 `sudo update-alternatives --install /usr/lib/jvm/javac javac /usr/lib/jvm/java-7-sun/...