最近两个java 项目均是性能关键型。
影响性能的两个主要因素:
结论:
对于内存丰富型,海量处理(服务器)应用,java 带来的性能损失(相对c++),不会超过20%。
这样的系统软件,用Java 并无不妥。
论据
为了支持以上结论, 列出如下论据
- block io , java 性能损失不超过20%
- sort 算法,不超过20%
- GC 问题,不超过20%
需要注意: 避免无谓的对象创建,避免无谓的反射,lazy initialize
- 尽可能 concurrent
用 executor ,尽可能 concurrent .
需要concurrent 的类,提前考虑 threadSafe
欢迎批评指正!建设性意见的更好。
ps:
今天重读了 《effective java 》
我最后还是确认了我的结论.
参见:http://jimcgnu.iteye.com/blog/54469
这是文中的测试结果。
Java C++
Fibonacci 10767 ms 7468 ms
Heapsort 5454 ms 4344 ms
NestedLoops 8022 ms 3453 ms
CopyData 1204 ms 1125 ms
代码也是有的。
引用:
I would admit that it is correct to say java is slower than c++ when it comes to primitve datatypes and optimizing nested loops but there are real objects also where the numbers may change somewhat. In fact it will depend upon the tasks.
顺便,说一声:
我是试图对比 bdb c edition vs java edition 's benchmark 的时候,发现这篇文档的。
ps;
The only two examples that I know of that have been implemented both in C++ (or C) and Java are http://www.bytonic.de/html/jake2.html (Jake2), a clone of Quake2 in Java, and http://cmusphinx.sourceforge.net/sphinx4.. (Sphynx), a speech recognizer first coded in C, then in Java. Jake2 performance in Java 5.0 are identical to the original C versions (in some configurations), and Sphynx4 (in Java) performs better than the C version.
add some interesting example.
http://code.google.com/p/hypertable/wiki/WhyWeChoseCppOverJava
> Would love to see the Oracle/Tangosol Coherence team discuss this as they > pretty much built their product as a large, distributed hashmap.
Language choice tends to be very personal, and usually defaults to what a programmer knows best, or is most comfortable with.
Despite working in C/C++ for years before Java, and continuing to work in C++ (no C anymore) today -- alongside C# and Java -- I would still default to Java for most things.
I don't know if the rationale given here makes sense, but in general, for a tightly focused product and a small development team that is comfortable working in C++, then C++ can certainly have a performance edge over Java (for most use cases).
Java is significantly better at "global optimizations" from a development perspective, which is to say that within a process (e.g. JVM), the boundary cost of Java (libraries, APIs, down to the interface level) is far lower than the cost of C++ as a project grows. (It's hard to explain if you haven't worked with large scale C++ projects that pull together multiple libraries and work from different groups.) The side-effect of this is often that the cost of development in Java does not rise as fast in correlation to the complexity of the product, and that the fn(quality,performance) does not drop as fast. However, while I would testify to this under oath, you will find the opposite opinion to be just as strongly believed by another programmer.
Peace,
Cameron Purdy Oracle Coherence
but,
Surely the development time arguments only apply if no-one really uses your software. As long as enough people use your software then even a marginal performance benefit is worth significant programming effort.
You wouldn't like it if Microsoft wrote Word in C# because it was slightly easier would you?
so critical issue is which quaility is enough.
分享到:
相关推荐
Java性能瓶颈可能导致系统响应变慢,用户体验下降,甚至可能导致服务器资源耗尽。而漏洞的存在则可能让系统面临被攻击的风险,因此,掌握有效的检测工具对于Java开发者来说是必备技能。本主题将深入探讨"JAVA性能...
本资源摘要信息来自阿里巴巴Java性能调优实战(2021华山版),旨在帮助Java开发者掌握性能调优的实战经验和技术。 性能调优的重要性 性能调优是软件开发中一个非常重要的方面。作者通过一个故事,讲述了如何在实际...
《Java程序性能优化:让你的Java程序更快、更稳定》以Java性能调优为主线,系统地阐述了与Java性能优化相关的知识与技巧。, 《Java程序性能优化:让你的Java程序更快、更稳定》共6章,先后从软件设计、软件编码、JVM...
Java性能优化是IT行业中至关重要的一个领域,尤其是在大型企业级...通过阅读和学习这四本书籍,开发者不仅可以掌握Java性能优化的基础知识,还能了解到最佳实践和实用技巧,从而在实际工作中有效地提升软件系统的性能。
通过Performance Analyzer这样的工具,开发者可以有效地进行Java性能分析,从而提升应用的运行效率,降低系统资源消耗,确保应用程序的稳定性和可靠性。在实际操作中,应结合代码审查、压力测试和持续监控,才能全...
《Java程序性能优化:让你的Java程序更快、更稳定》共6章,先后从软件设计、软件编码、JVM调优以及程序故障排斥等方面介绍针对Java程序的优化方法。第1章介绍性能的基本概念、定律、系统调优的过程和注意事项。第2章...
JAVA开发高性能IM即时通信系统源码,JAVA语言开发的轻量、高性能、单机支持几十万至百万在线用户IM,主要目标降低即时通讯门槛,快速打造低成本接入在线IM系统,通过极简洁的消息格式就可以实现多端不同协议间的消息...
Java性能优化是提升软件效率和用户体验的关键环节,尤其是在大规模应用和高并发场景中。本教程将深入探讨如何通过各种技术和策略来优化Java程序,确保其高效运行。 首先,理解Java性能的基础是JVM(Java虚拟机)。...
在《大话JAVA性能优化》的PDF文档中,你将找到这些方面的详细讨论和实例分析,它不仅涵盖了理论知识,还提供了实战技巧和工具使用,是Java开发者进行性能优化的宝贵参考资料。通过深入学习和实践,开发者可以提升...
JAVA性能测试工具是IT行业中用于评估和优化JAVA应用程序性能的关键组件。这些工具旨在模拟真实世界的负载情况,帮助开发者识别和解决性能瓶颈,确保应用程序在高负载下仍能保持稳定和高效运行。以下是对几种主要JAVA...
Java性能优化是软件开发中的一个关键领域,尤其是在大型企业级应用和高并发系统中。《Java性能优化》一书深入探讨了如何通过各种技术提升Java应用程序的效率和响应速度。以下是一些基于书籍源码和相关文件名的关键...
性能监控是指通过一系列的技术手段对软件系统的运行状态进行持续跟踪、分析和优化的过程。在Java虚拟机的上下文中,性能监控主要关注的是如何利用各种工具和技术来监控和改善JVM及其上运行的应用程序的性能。 #####...
在Java性能优化实战的21讲中,涵盖了Java开发...通过以上21个主题的学习,开发者将能够全面掌握Java性能优化的理论知识和实践经验,从而在实际工作中提升应用的性能,解决性能问题,为系统的稳定高效运行打下坚实基础。
在Java性能调优中,这意味着我们需要找到限制系统性能的瓶颈,并对其进行优化。 2. **Amdahl定律**:该定律指出,系统的加速比取决于可以被并行化的部分以及这些部分的优化程度。这意味着即使对一小部分代码进行...
在JavaMonitor-master这个项目中,我们可以预期找到一个完整的Java性能监控系统的源代码,包括客户端代理和服务器端的实现。开发者可能会通过阅读和理解这些代码来学习如何构建自己的监控系统,或者将其作为起点进行...
在软件开发过程中,特别是在企业级应用中,程序的性能往往直接关系到用户体验的好坏乃至系统的稳定运行。因此,进行有效的性能优化是必不可少的。《Java程序性能优化》这本书主要探讨了如何通过各种技术和策略来提高...
总的来说,JavaMelody是一款免费且功能齐全的Java应用性能监控解决方案,能够帮助开发者和运维团队提高故障排查效率,优化系统性能,是Java开发过程中不可或缺的辅助工具。通过持续监控和分析,可以及时发现并解决...
Java高性能系统的设计与优化是构建高效、稳定且可扩展的应用程序的关键环节。在这个主题中,我们将深入探讨几个关键的知识点,包括高性能系统的一般架构、优化原则以及JVM(Java虚拟机)的优化。 首先,让我们关注...