Java与C++:使用Web服务的应用程序的性能

问题描述:

我试图创建一个从不同的Web服务获取数据的使用者应用程序。 应用程序必须处理实时大容量数据。我只能在性能的基础上选择Java和C++。请建议。Java与C++:使用Web服务的应用程序的性能

谢谢。

+0

试一试[programmers.stackexchange.com](http://programmers.stackexchange.com/) – casablanca 2010-12-12 16:37:28

+1

就性能而言,两种语言都是一样的。编写良好的C++应用程序的速度与编写良好的Java应用程序的速度相同。表现是**不**你应该用来作出决定的标准。 – 2010-12-12 17:38:50

网站的性能差异并不像您拥有的技能那么重要。用一种语言写得好的应用程序比其他应用程序写得不好。恕我直言,你真的需要知道你在C++中做什么来编写一个写得很好的应用程序,在Java中它更容易编写一个写得很好的程序,因为它不需要相同的技能水平。

我同意@贾森的观点,你不应该考虑这一个或其他解决方案。在一个典型的应用程序中,90%的时间花费在10%的代码中。即使您发现C++速度更快,您只需要为10%的代码执行此操作。

但是,我怀疑你最好花时间看看硬件和网络基础设施,因为这些可以带来更多的差异,并且很容易被开发人员忽略。

+1

这在理论上是正确的。在实践中,有[Audacity](http://audacity.sourceforge.net/)与商业/昂贵/华丽/糖衣基于Java的等价物。关于.NET工作室与传统VC++的相同之处6.理论上,这种缓慢和低效率没有理由。然而,在实践和现实世界中,它是存在的。 – Withheld 2013-01-09 17:47:32

+1

那里有一些垃圾纪念技术。 ;) – 2013-01-09 17:49:40

+1

在Java中,我开发了一种交换,它支持所有绑定和出站消息的持久性,持续吞吐量为每秒一百万个请求/事件,典型的往返延迟小于1微秒,同一台机器。在C++中,我可能会使它更快,但我真的需要吗? ;) – 2013-01-09 17:52:32

通常可以用C++编写软件,该软件比用Java编写的等效软件更有效地处理数据。差异往往是微不足道的。

因为C++很复杂,所以新手程序员编写的C++的表现非常弱。 Java更简单,所以很难在Java中犯这么大的错误。

如果您的方案由于网络带宽而存在瓶颈,那么只要它有效地处理I/O,使用的语言可能并不重要。 Java和C++都做得很好。

如果您的方案由于计算带宽而出现瓶颈,C++可能会更有效。通过JIT编译和其他技术,Java近年来变得相当高效。

如果我自己这样做,我更喜欢Java到C++,因为它是一种更高级的语言,具有更好的工具,并且通过内存管理可以减少错误发生的机会。我会用Java对原型系统的计算部分进行原型设计,并看看它是如何执行的。如果足够,我会留在爪哇。否则,我会与C++进行比较,如果有性能优势,可能使用JNI或JNA来执行C++中的高性能计算。