适合开发跨平台应用的Java替代方案

3
我一直使用Java开发跨平台应用程序,但这次Java不能解决我的问题。问题是,我必须开发一个计算密集型的应用程序。更确切地说,在我的应用程序中有一个模拟,它有点太重了。我制作了一个Java原型应用程序,但它不够快,我的模拟有些卡顿,所以我开始考虑转换到C++。
我的应用程序有一个GUI,我想知道如果我想用C++开发跨平台应用程序,我该怎么处理GUI?
我的问题是:
  1. 如果我使用Qt框架,我的应用程序会变得显著更快吗?
  2. 如果我将我的jar文件部署为本机操作系统可执行文件(.exe、.app等),我的应用程序会变得显著更快吗?

附注:我的软件目标平台为Mac OSx、Windows和Ubuntu。


11
你是否分析了Java版本中性能较慢的部分,并尝试进行改进? - Jon Skeet
1
正如@JonSkeet所说,一旦您找到了Java版本中的问题并进行了改进,您可以始终在C++中编写“慢”的部分,并通过JNI调用。 - Deco
你正在进行什么样的计算?根据你所做的事情,限制可能在于你使用的硬件选择。在我看来,有些问题在C++中比Java快得多,你可能会看到10-30%的改进,但你也可以通过使用更快的硬件来获得这种改进。 - Peter Lawrey
3
@Pouya:我不仅是在谈论“清理和改进” - 我在谈论对您的代码进行剖析和分析,以找出瓶颈所在。 - Jon Skeet
@PeterLawrey,有两个内部循环,每个循环500次迭代(总共500的平方),在内部循环中,我必须进行多次数学计算(全部使用double精度)。这是瓶颈所在。在这种计算中,C++会更好吗? - Pouya
显示剩余2条评论
2个回答

4
这篇文章可能会对你有所帮助,我几年前也曾面临同样的问题。考虑到自己不擅长C++,并且我的项目说实话非常简单,因此我决定坚持使用Java进行编程体验。正如你所知,Java在全球范围内非常流行/普及,拥有大量文档和库供您使用,Qt更快一些,但您需要亲自动手来完成工作。如果性能是您的目标,请选择Qt。或者重新设计应用程序,将Java / Swing GUI和C ++程序服务器端结合起来。无论如何,这是链接。

http://turing.iimas.unam.mx/~elena/PDI-Lic/qt-vs-java-whitepaper.pdf

对于某些项目,尤其是没有GUI或具有有限GUI功能的项目,Java/Swing可能是适当的选择。 C++ / Qt是一种整体上更优秀的解决方案,特别是对于GUI应用程序。


+1 for Qt!如果你不想或不能使用Java,那么Qt绝对是用于C++可移植GUI应用程序的最佳选择。 - fge

2
使用C++而不是Java可以提高CPU性能,有时甚至可以提高10-30%。然而,使用多个线程也会增加可用的CPU数量。考虑到使用多个线程没有帮助,我怀疑您的瓶颈不在于CPU,换语言也不太可能有所帮助。
C语言可以帮助编写图形卡程序,例如CUDA。对于某些类型的问题,使用高性能处理卡可以获得明显更快的结果。 http://www.nvidia.co.uk/object/cuda_home_new_uk.html 有JOCL库可用于从Java使用CUDA,但实际工作的代码是一种类似于C的语言。
我建议您确定您的瓶颈实际上在哪里,因为切换到C ++不会增加您的缓存大小,内存带宽,IO带宽或主内存大小。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接