我最近读到过多的日志记录会影响我们应用程序的性能。但据我所知,日志记录是一项 IO 绑定作业(例如向控制台发送字节流或写入文件),并且我们还读取了当 IO 绑定作业发生时不使用 CPU 周期(CPU那时空闲)那么如果 IO 不消耗我的 CPU 周期,它怎么会影响我的应用程序的性能?
答案 0 :(得分:0)
日志记录可以通过两种方式影响应用程序的性能。
首先,您使用的 API 可能会在您的应用程序代码中创建大量字符串,这些字符串可能占用 CPU 周期并创建需要收集的垃圾。
其次,日志线程需要在将字符串写入磁盘之前对其进行格式化。
根据您记录的频率和您记录的消息的复杂性,这可能会消耗比您预期更多的 CPU 周期。请注意,有很多未知数,例如您的机器拥有的内核数量、您的应用程序代码需要多少个内核等...
理想的做法是分析您的应用程序以查看 CPU 使用率的实际来源。
答案 1 :(得分:0)
它肯定会影响应用程序的性能。
答案 2 :(得分:0)
就这样对待它:
当您在调试级别添加大量日志并在信息级别配置上运行您的应用程序时,您的程序仍然会计算消息并至少评估日志级别条件。
然后是 GC 的开销,您可以将日志发送到某个监控系统,或集中式日志记录机制等,这都需要 CPU 周期和内存。
在 java 中使用 lambdas 编写日志有一个强有力的论据,因为如果您使用字符串计算编写日志,则计算只会在级别检查得到满足后发生。