我在应用程序中使用Log4J进行日志记录。以前我使用像下面这样的调试调用:
选项1:
logger.debug("some debug text");
但有些链接建议最好先检查一下isDebugEnabled()
,例如:
选项2:
boolean debugEnabled = logger.isDebugEnabled();
if (debugEnabled) {
logger.debug("some debug text");
}
所以我的问题是“ 选项2是否会以任何方式提高性能? ”。
因为在任何情况下,Log4J框架都对debugEnabled进行相同的检查。对于选项2,如果我们在单个方法或类中使用多个debug语句,则该框架可能是有益的,在该方法或类中,框架不需要isDebugEnabled()
多次调用方法(每次调用);在这种情况下,它isDebugEnabled()
仅调用一次方法,并且如果Log4J配置为调试级别,则实际上它isDebugEnabled()
两次调用方法:
我不认为如果我们logger.debug()
在方法或类中编写多个语句,debug()然后根据选项1 调用方法,那么与选项2相比,它对Log4J框架来说是开销。因为这isDebugEnabled()
是一个非常小的方法(就代码而言),所以它可能成为内联的好人选。
问题内容: 当我浏览一些代码时,我注意到使用logger的方式如下, 但是在某些代码中,我是这样观察的。 当我查看log4j的源代码时,已检查了Logger本身的方法 。那为什么我们需要这些不必要的开销呢? 问题答案: 当传递给您的字符串花费时间评估时,这很有用,在这种情况下,如果未启用调试,则可以跳过此评估。 IMO使得代码的可读性大大降低,因此只有在性能有了显着提高时才应使用它。
问题内容: 如果一个查询只有一个结果记录,将查询限制在一个结果记录中,会提高性能吗? 例如 如果只有一个记录具有该名称?如果主键/设置为唯一,那该怎么办?值得更新查询还是收益最小? 问题答案: 如果列有 唯一索引:不, 没有更快 非唯一索引:可能是 因为它会阻止发送除第一个匹配项之外的任何其他行(如果存在) 无索引:有时 如果有1个或更多行与查询匹配,则为 yes ,因为在匹配第一行后将停止全表扫
问题内容: Kotlin是否可以提高性能?有基准测试吗?Kotlin比Java快吗?我在Kotlin网站上找到了这个。https://kotlinlang.org/docs/reference/comparison- to-java.html 谈论语言功能而不是性能。 问题答案: Kotlin生成的字节码与Java非常相似,因此Kotlin代码的性能在大多数情况下与等效Java代码的性能相同。 内
问题内容: 我是Laravel的新手。请原谅新手问题,但是如何查找记录是否存在? 我在这里可以查看是否有记录? 问题答案: 这取决于您之后是否要与用户一起使用,还是仅检查是否存在。 如果要使用用户对象(如果存在): 如果您只想检查 甚至更好
我是拉雷维尔的新手。请原谅这个新手的问题,但是我如何找到是否存在记录? 我可以在这里做什么来查看是否有记录?
问题内容: 我必须每20秒阅读一次CSV。每个CSV都包含最小值。500至最大 60000行。我必须将数据插入Postgres表中,但是在此之前,我需要检查是否已插入项目,因为很有可能会获得重复的项目。检查唯一性的字段也已建立索引。 因此,我分块读取文件,并使用IN子句获取数据库中已有的项目。 有更好的方法吗? 问题答案: 这应该表现良好: 与这个答案密切相关。