Javacdebugging开启和closures之间有性能差异?

如果我打开用Javac生成debugging信息,那么类文件大20-25%。 这对运行Java程序有什么性能影响? 如果是,在哪些条件和多less。 我期望对加载类有一些影响,因为文件较大,但这应该是最小的。

在任何语言中,debugging信息都是元信息。 它本质上增加了对象文件的大小,从而增加了加载时间。 在debugging器外执行期间,该信息实际上被完全忽略。 如JVM规范中所述(虽然不是很清楚),debugging信息存储在字节码stream之外。 这意味着在执行时,类文件没有区别。 如果你想确定,尝试一下:-)。

PS。 通常对于debugging来说,closures优化是有价值的。 这确实会对性能产生影响。

closuresdebugging应该不会有所作为。 但是,一旦closuresdebugging并打开优化,您应该看到一个区别,因为这会在编译时进行一些静态优化。 这样,即使您的热点优化代码在运行时变得更快。

但是到目前为止,在获得完整的堆栈轨迹或者具有更多的用户性能之间的权衡之后,我总是投票支持堆栈轨迹。 毕竟,用户每年愿意花1000美元购买一台更快的机器,而不愿意花15分钟给您提供有意义的错误信息给您解决问题。

多年后,我更愿意重视我比用户的1000美元高出15分钟。 🙂

请注意,由于JDK1.3 javac忽略了任何优化标志,所以“编译时优化是不必要的”