谁能量化C和x2B之间的性能差异+;Java呢? java在JIT之前最初很慢,但是今天的性能非常接近C++。我想知道是否有人在这两种语言之间进行了可衡量的性能比较?与C++相比,java在哪里短?Java为开发人员提供了许多生产力提升,因此他们可以更快地编写应用程序,因为存在垃圾学院、缺少指针等问题。例如,Firefox、Webkit和Open Office等应用程序,如果使用100%Java编写,则可以更快、更可靠地开发,速度可能会提高2倍,但是开发人员出于性能原因仍然选择C/C++。有人能证明java不能像C++那样应用到哪里去执行应用程序。 我只需补充一点,C++中的许多应用工作仍然是有原因的。这不仅仅是一个主观问题。具有更高抽象级别的语言通常会付出性能代价。如果不存在这种惩罚,我们都将使用更高级的语言编程。与C++相比,java仍然在哪里付费?具体点。
在很多方面,这就像把苹果和桔子比较一样 C++是建立在这样一个概念上的:你不用为任何你不用的东西付费。 如果你自己管理内存,如果你不使用虚拟功能,等等 Java并没有给你这种自由。它为您提供了您甚至不想要的功能。对于您可能希望自己分配内存的所有内容,您将不得不对所有内容使用堆对象,因此您将受到垃圾收集的影响 一旦你开始谈论GUI,比较起来就更加困难了,因为不同的UI框架和工具包有不同的性能问题。例如,Swing/AWT通常比直接为本机操作系统编写的东西要慢。在C++中,你很少能找到真正的便携式工具包,等等。谁能量化C和x2B之间的性能差异+;Java呢? java在JIT之前最初很慢,但是今天的性能非常接近C++。我想知道是否有人在这两种语言之间进行了可衡量的性能比较?与C++相比,java在哪里短?Java为开发人员提供了许多生产力提升,因此他们可以更快地编写应用程序,因为存在垃圾学院、缺少指针等问题。例如,Firefox、Webkit和Open Office等应用程序,如果使用100%Java编写,则可以更快、更可靠地开发,速度可能会提高2倍,但是开发人员出于性能原因仍然选择C/C++。有人能证明java不能像C++那样应用到哪里去执行应用程序。 我只需补充一点,C++中的许多应用工作仍然是有原因的。这不仅仅是一个主观问题。具有更高抽象级别的语言通常会付出性能代价。如果不存在这种惩罚,我们都将使用更高级的语言编程。与C++相比,java仍然在哪里付费?具体点。,java,c++,performance,comparison,Java,C++,Performance,Comparison,在很多方面,这就像把苹果和桔子比较一样 C++是建立在这样一个概念上的:你不用为任何你不用的东西付费。 如果你自己管理内存,如果你不使用虚拟功能,等等 Java并没有给你这种自由。它为您提供了您甚至不想要的功能。对于您可能希望自己分配内存的所有内容,您将不得不对所有内容使用堆对象,因此您将受到垃圾收集的影响 一旦你开始谈论GUI,比较起来就更加困难了,因为不同的UI框架和工具包有不同的性能问题。例如,Swing/AWT通常比直接为本机操作系统编写的东西要慢。在C++中,你很少能找到真正的便携式工
我认为,当开发人员开始使用openoffice时,Java的速度要慢得多,UI工具包又慢又难看。Eclipse等工具证明,即使在Java中也可以构建相对不错的UI,尽管不可否认,SWT是一个在本机级别上做很多事情的工具包 >我相信任何人都不能证明,C++总是比java有意义的快,因为简单的事实是,你可以随时回复到JNI,从java获得原生速度。 例如,请参见SWT,它是IBM(我认为)构建的图形化工具,旨在取代Swing并提供本机性能和外观
I,一方面,我希望开发速度比速度更慢,因为我认为最小的开发时间比原始的应用速度更重要,尤其是当我仍然可以获得这个速度时,我可以同时拥有java <强>的开发的容易度和编译语言的速度> > /p> 完成Pax和URI的答案,以下是一些最近的基准:
- 所有对象的堆分配(即使是像迭代器这样的小对象)
- 大量的动态铸件
- 内存使用率增加
该条提到: “垃圾收集永远不会像直接内存管理那样高效。”而且,在某种程度上,这些说法是正确的--动态内存管理没有直接内存管理那么快--
malloc/free方法一次处理一个内存块,而垃圾收集方法倾向于大批量处理内存管理,从而产生更多的优化机会(代价是一些可预测性损失)
对我来说,这个问题有点像转移视线(也许不是故意的)。这真的是一个错误的问题 首先要问的问题是
- 是否有太多不必要的I/O
- 是否占用了太多内存
- 内存分配器是否被重击(Alloc太多,细粒度对象太多)
- 我的程序是否在网络I/O上被长时间阻止
- 你把锁放错地方了吗
- 选择适合数据集和预期缩放的数据结构和算法
- 适当情况下,基于多线程UI的应用程序(UI线程、后台/处理线程)
- 计划长网络I/O延迟
- 计划在前期定期运行回归测试之前设定目标并衡量性能
- 测量内存使用率-内存占用很慢(让日本人开始:)
- 存在事件、回调或其他通知机制时不轮询