【发布时间】:2011-01-28 22:28:11
【问题描述】:
我正在用 Java 重构一些代码,所以我正在计时以确保代码不会变慢。但是,新的重构代码似乎比原始代码花费了更多的时间。值得注意的是,当我使用分析器运行代码时,新代码比旧代码快得多。主要区别在于旧代码是递归的,而新代码是迭代的。分析器能否对递归代码产生数十万倍的影响,而对迭代代码的影响仅为 1.5 倍?
我在 Mac OS X 10.6.6、3 GB RAM、2.4 GHz CPU 上运行,使用带有 Java 1.6.0__22 64 位服务器的默认 Netbeans 6.9 分析器。
(这两种方法都有使用 System.currentTimeMillis() 的自计时代码,让我可以在不使用分析器时比较时间,但这不会显着影响事情。)
【问题讨论】:
-
您使用的是什么分析器?探查器是否使您的代码在与正常情况不同的 JVM 中运行?
-
@Andrew Netbeans 默认,但我不知道它是否使用不同的 JVM(不过我怀疑它确实如此)。
标签: java recursion profiling performance