Ale*_*lds 19 java performance profiling
我有一个程序,我从C移植到Java.两个应用程序都使用快速排序来订购一些分区数据(基因组坐标).
Java版本运行速度很快,但我想让它更接近C版本.我正在使用Sun JDK v6u14.
显然我无法与C应用程序保持一致,但我想了解我能做些什么来尽可能地提高性能(在环境范围内).
我可以做些什么来测试应用程序的不同部分,内存使用情况等的性能?具体来说,我该怎么办?
另外,我可以实现哪些技巧(通常)来更改类和变量的属性和组织,减少内存使用并提高速度?
编辑:我使用Eclipse,显然更喜欢任何第三方工具的免费选项.谢谢!
And*_*son 32
不要试图超越jvm.
特别是:
不要为了性能而试图避免创建对象
在适用的地方使用不可变对象.
正确使用对象的范围,以便GC可以完成其工作.
使用原语你指的是原语(例如,与可空的整数相比,非可空的int)
使用内置算法和数据结构
处理并发时使用java.util.concurrent包.
对性能的正确性.首先做对,然后测量,然后用剖析器进行测量,然后进行优化.
Han*_*Gay 11
显然,个人资料个人资料.对于Eclipse,有TPTP.这是一篇关于Eclipse的TPTP插件的文章.Netbeans有自己的分析器.jvisualvm作为一个独立的工具很好.(整个dev.java.net服务器目前似乎已经停止运行,但它非常活跃.)
首先要做的是使用库排序例程Collections.sort ; 这将要求您的数据对象是可比较的.这可能足够快,肯定会提供良好的基线.
一般提示:
StringBuilder(不是StringBuffer因为我刚刚提到的锁定事物)而不是连接String对象final; 如果可能的话,让你的课程完全不可变ArrayList(甚至是一个数组),这样你访问的内存是连续的,而不是像它可能是一样的碎片.LinkedList使用分析器:
使用提供商提供的最新版本的JVM.顺便提一下,Sun的Java 6更新14确实带来了性能改进.
测量GC吞吐量并为您的工作负载选择最佳垃圾收集器.
| 归档时间: |
|
| 查看次数: |
11301 次 |
| 最近记录: |