【发布时间】:2010-10-30 15:14:51
【问题描述】:
我有一个从 C 移植到 Java 的程序。这两个应用程序都使用快速排序来排序一些分区数据(基因组坐标)。
Java 版本运行速度很快,但我想让它更接近 C 版本。我使用的是 Sun JDK v6u14。
显然我无法与 C 应用程序相提并论,但我想了解我可以做些什么来尽可能地提高性能(在环境限制内)。
我可以做哪些事情来测试应用程序不同部分的性能、内存使用情况等?具体我该怎么做?
此外,我可以(通常)实施哪些技巧来更改我的类和变量的属性和组织,减少内存使用并提高速度?
编辑:我正在使用 Eclipse,显然更喜欢任何第三方工具的免费选项。谢谢!
【问题讨论】:
-
您是否针对 Java 版本对 C 版本进行了基准测试。使用 JIT 技术,JVM 在某些情况下实际上可以胜过本机代码,具体取决于 C 编译器实际生成的机器代码。
-
根据数据的性质以及您在快速排序算法中选择基准的方式,您可能需要考虑合并排序,因为它最坏的情况是 O(n log n)
-
尝试使用内置的快速排序,看看它与您的实现相比如何。你可能会感到惊讶:)
-
一些可能也与 Java 相关的性能改进提示:stackoverflow.com/questions/32581644
标签: java profiling performance