【问题标题】:Suitable replacement for java to develop a cross-platform application适合替代java开发跨平台应用
【发布时间】:2012-01-22 16:09:55
【问题描述】:

我一直使用java开发跨平台应用,但是这次java并不能解决我的问题。问题是,我必须开发一个计算成本很高的应用程序。更准确地说,在我的应用程序中有一个有点太重的模拟。我制作了一个 java 原型应用程序,但速度不够快,而且我的模拟有些滞后,所以我开始考虑切换到 c++。 我的应用程序有一个 GUI,我想知道是否要为跨平台应用程序切换到 c++,我应该如何处理 GUI? 我的问题是:

  1. 如果我使用 Qt 框架,我的应用程序会明显更快吗?
  2. 如果我将 jar 文件部署到本机 os 可执行文件(.exe、.app 等),我的应用程序会明显更快吗?

附言Mac OSx、Windows 和 Ubuntu 是我的软件的目标平台。

【问题讨论】:

  • 你有没有分析过Java版本性能慢的地方并尝试改进?
  • 是的。我清理/改进了我的代码到最高级别。还是很慢。线程也不能解决问题。
  • 正如@JonSkeet 所说,一旦您发现 Java 版本中的问题并对其进行改进,您总是可以用 C++ 编写“慢”部分并通过 JNI 调用
  • 你在做什么计算?根据您所做的事情,限制可能在于您使用的硬件的选择。恕我直言,在 C++ 中几乎没有比 Java 快得多的问题,您可能会看到 10-30% 的改进,但您也可以通过使用更快的硬件来获得这种改进。
  • @Pouya:我说的不仅仅是“清理和改进”——我说的是分析和分析您的代码以找出瓶颈所在。

标签: java performance qt cross-platform


【解决方案1】:

这篇文章可能会对您有所帮助,几年前我也遇到过同样的问题。由于我自己的编程经验,我决定坚持使用 Java,因为我的 C++ 不是那么好,而且我的项目说实话,非常简单。如您所知,Java 在世界范围内非常普及/广泛,有大量文档和库可供您使用,Qt 更快,但您需要亲自动手才能完成这项工作。如果性能是您的目标,Go Qt。或者重新设计您的应用程序以拥有 Java/Swing GUI 和 C++ 程序服务器端。无论如何,这是链接。

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

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

【讨论】:

  • +1 为 Qt!如果您不想/不能使用 Java,这绝对是使用 C++ 开发可移植 GUI 应用程序的方法。
【解决方案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 带宽或主内存大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-24
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多