logback isDebugEnabled()在多核CPU上运行缓慢吗?

海丁

我们目前正在为医疗档案开发基于Scala和Akka Cluster的产品。在代码中有很多

if(logger.isDebugEnabled()) {
    logger.debug(expensiveFunction())
}

在我们以前的使用标准SQL / JPA,阻塞I / O和大量线程的代码中,这种构造或多或少是免费的。但是,在响应式编程时代的今天,CPU高速缓存同步以及内存屏障和锁定被认为是昂贵的,应避免使用。Logback isDebugEnabled()是否导致易失性访问并因此导致内存障碍。如果是这样,那么是否有很多logger.isDebugEnabled()成为潜在的性能杀手?

关于CPU缓存同步和内存障碍的主题,有一篇很棒的博客文章:http : //mechanical-sympathy.blogspot.se/2013/02/cpu-cache-flushing-fallacy.html

大卫·罗素

查看登录代码,在isDebugEnabled()内部没有访问任何锁或volatile。

但是,对于真正紧密的循环,我建议这样做:

boolean isDebugEnabled = log.isDebugEnabled();

while(cond) {
    if (isDebugEnabled) {
        log.debug(...);
    }
    doStuff();
}

如果在一个紧密的循环中调用了您的逻辑,但是该循环在另一个类中,则将isDebugEnabled设置为最终成员变量,然后在构造函数中对其进行初始化。因为热点将看到“ if(false)”并仅删除代码,所以这可能会导致出色的性能。唯一的缺点是您不能即时更改日志级别,但是在大多数系统中这并不是什么大问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

logback isDebugEnabled()在多核CPU上运行缓慢吗?

来自分类Dev

动态更改运行在Tomcat上的Web应用的Logback级别

来自分类Dev

即使存在,logback也找不到logback.xml(在类路径上)

来自分类Dev

可以使用Spring定义的logback属性吗?

来自分类Dev

如何使用logback在我的日志文件上添加标题?

来自分类Dev

在错误级别的日志事件上使Logback引发异常

来自分类Dev

当测试从Intellij运行而不是从终端运行时,Logback对于SBT起作用

来自分类Dev

Node Child Process Spawn是否在多核CPU上运行?

来自分类Dev

通过Maven运行时,Spring Profile在Logback中不可用

来自分类Dev

-Dlogback.configurationFile = logback.xml在运行Spring-Boot时被忽略

来自分类Dev

logback:换行符在异常堆栈跟踪之前,但是不是这样吗?

来自分类Dev

Logback:我可以更改日志级别名称吗?(警告 -> 警告)

来自分类Dev

logback.xml 到 logback 属性文件

来自分类Dev

slf4j未能绑定记录器,尽管在类路径上存在logback

来自分类Dev

在持续集成服务器上使用logback和TestNG时的良好做法

来自分类Dev

使Logback在本地写入控制台,但在服务器上记录文件

来自分类Dev

Netty或任何其他非阻塞IO服务器上的Logback MDC

来自分类Dev

Logback未在Linux服务器上写入特定的日志文件

来自分类Dev

slf4j未能绑定记录器,尽管在类路径上存在logback

来自分类Dev

扩展logback配置

来自分类Dev

使用logrotate和logback

来自分类Dev

如何设置LogBack配置

来自分类Dev

Springboot Logback配置

来自分类Dev

Logback-动态配置

来自分类Dev

JOOQ和Logback

来自分类Dev

如何设置LogBack配置

来自分类Dev

在Akka中使用logback

来自分类Dev

使用LogBack的任何缺点

来自分类Dev

关于 logback 的 AsyncAppender

Related 相关文章

  1. 1

    logback isDebugEnabled()在多核CPU上运行缓慢吗?

  2. 2

    动态更改运行在Tomcat上的Web应用的Logback级别

  3. 3

    即使存在,logback也找不到logback.xml(在类路径上)

  4. 4

    可以使用Spring定义的logback属性吗?

  5. 5

    如何使用logback在我的日志文件上添加标题?

  6. 6

    在错误级别的日志事件上使Logback引发异常

  7. 7

    当测试从Intellij运行而不是从终端运行时,Logback对于SBT起作用

  8. 8

    Node Child Process Spawn是否在多核CPU上运行?

  9. 9

    通过Maven运行时,Spring Profile在Logback中不可用

  10. 10

    -Dlogback.configurationFile = logback.xml在运行Spring-Boot时被忽略

  11. 11

    logback:换行符在异常堆栈跟踪之前,但是不是这样吗?

  12. 12

    Logback:我可以更改日志级别名称吗?(警告 -> 警告)

  13. 13

    logback.xml 到 logback 属性文件

  14. 14

    slf4j未能绑定记录器,尽管在类路径上存在logback

  15. 15

    在持续集成服务器上使用logback和TestNG时的良好做法

  16. 16

    使Logback在本地写入控制台,但在服务器上记录文件

  17. 17

    Netty或任何其他非阻塞IO服务器上的Logback MDC

  18. 18

    Logback未在Linux服务器上写入特定的日志文件

  19. 19

    slf4j未能绑定记录器,尽管在类路径上存在logback

  20. 20

    扩展logback配置

  21. 21

    使用logrotate和logback

  22. 22

    如何设置LogBack配置

  23. 23

    Springboot Logback配置

  24. 24

    Logback-动态配置

  25. 25

    JOOQ和Logback

  26. 26

    如何设置LogBack配置

  27. 27

    在Akka中使用logback

  28. 28

    使用LogBack的任何缺点

  29. 29

    关于 logback 的 AsyncAppender

热门标签

归档