如果我打开使用Javac生成调试信息,那么类文件大20-25%。这对运行Java程序有什么性能影响?如果是,在哪些条件下有多少。我期望对加载类有一些影响,因为文件较大,但这应该是最小的。Javac调试开启和关闭之间是否存在性能差异?
56
A
回答
56
在任何语言中,调试信息都是元信息。它本质上增加了对象文件的大小,从而增加了加载时间。在调试器外执行期间,该信息实际上完全被忽略。如JVM spec中所述(尽管不清楚),调试信息存储在字节码流之外。这意味着在执行时,类文件没有区别。如果你想确定,试试看:-)。
Ps。通常对于调试来说,关闭优化是有价值的。 确实对有性能影响。
14
关闭调试应该不会有所作为。但是,一旦关闭调试并打开优化,您应该看到一个区别,因为这会在编译时进行一些静态优化。这样,即使您的热点优化代码在运行时也会变得更快。
但到目前为止,得到意全栈的痕迹或有一些更多的用户性能之间的权衡,我总是投给了堆栈踪迹。毕竟,用户每年愿意花1000美元购买一台更快的机器,但不愿意花15分钟为您提供有意义的错误消息,以解决他们的问题。
这些年过去了,我更愿意重视我比用户的1000美元高出15分钟。 :)
5
请注意,因为JDK1.3的javac忽略任何优化的标志,“编译时的优化是不必要的”
相关问题
- 1. concat和||之间是否存在性能差异?在oracle
- 2. saveAs()和exportDocument()之间是否存在性能差异?
- 3. “/\((.*)\)/”和“/ \(([^ \)] *)\)/”之间是否存在差异?
- 4. 这两个查询之间是否存在性能差异?
- 5. 查看和存储过程之间是否存在任何性能差异
- 6. 在Java中,新建和本地之间是否存在性能差异?
- 7. 单链表和双链表之间是否存在性能差异?
- 8. Linqs查询表达式和点符号之间是否存在性能差异?
- 9. 数组和矩阵运算符之间是否存在性能差异?
- 10. 使用ScaleTransform和直接设置大小之间是否存在性能差异?
- 11. int和仅包含int的结构之间是否存在性能差异?
- 12. int i = 0和int i = default(int)之间是否存在性能差异?
- 13. Silverlight - C#和VB.net事件处理程序之间是否存在性能差异?
- 14. 循环RenderPartials和部分循环之间是否存在性能差异?
- 15. 二进制和XML序列化之间是否存在性能差异?
- 16. RenderPartial和Partial之间是否有任何大的性能差异?
- 17. 块和回调之间的性能差异是什么?
- 18. 调试Excel VSTO在开发和部署之间的差异
- 19. jconn2和jconn3之间的性能差异
- 20. .exists之间的性能差异?和.where.present?
- 21. drawBitmap和createScaledBitmap之间的性能差异
- 22. to_char和to_date之间的性能差异
- 23. Swazoo和Komanche之间的性能差异?
- 24. 性能差异,只是打开/手动关闭它
- 25. 创建闭包和some_func.bind之间的性能差异(这)
- 26. 调用局部变量和调用对象的实例变量之间是否存在性能差异?
- 27. HAVING在别名之间是否存在性能差异vs不使用HAVING
- 28. 在通过列添加创建的表之间是否存在性能差异?
- 29. 这两个SQL语句之间是否存在任何性能差异或功能差异?
- 30. NIO和IO管道之间是否存在差异
是否javac的还有-O?最后我记得它相当于-g:无。 – 2008-10-20 12:33:56
正确。加载时间受影响,但执行时间不受影响。 – kohlerm 2008-10-20 13:16:15