您现在的位置是:主页 > news > 长沙传媒公司排名/深圳sem优化

长沙传媒公司排名/深圳sem优化

admin2025/6/20 2:24:44news

简介长沙传媒公司排名,深圳sem优化,张家口网站设计,武汉自媒体公司日志输出中{}很好用(具体可参看:https://blog.csdn.net/Dongguabai/article/details/83719754) {}的确使用很方便,但是大多数博客文章说使用{}会性能更好,到底怎么样可以从源码中看看(其实可以大致猜测一下…

长沙传媒公司排名,深圳sem优化,张家口网站设计,武汉自媒体公司日志输出中{}很好用(具体可参看:https://blog.csdn.net/Dongguabai/article/details/83719754) {}的确使用很方便,但是大多数博客文章说使用{}会性能更好,到底怎么样可以从源码中看看(其实可以大致猜测一下…

日志输出中{}很好用(具体可参看:https://blog.csdn.net/Dongguabai/article/details/83719754)
在这里插入图片描述
{}的确使用很方便,但是大多数博客文章说使用{}会性能更好,到底怎么样可以从源码中看看(其实可以大致猜测一下,哪怕代码玩出花来,也要找到每个{}的位置进行替换吧)。
测试代码:
在这里插入图片描述
org.slf4j.helpers.MessageFormatter#arrayFormat(java.lang.String, java.lang.Object[], java.lang.Throwable):
在这里插入图片描述
本质也需要获取每个参数,找到位置通过StringBuilder拼接。所以不能说使用了{}效率更高,但是一般参数不会很多,数组遍历速度也是很快的,总体效率差是可以忽略的。

package test;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.util.ArrayList;
import java.util.List;/*** @author Dongguabai* @date 2018/11/4 20:41*/
public class TestLog {private static final Logger logger = LoggerFactory.getLogger(TestLog.class);public static void main(String[] args) {List<Long> sum = new ArrayList<Long>(10);for (int i2 = 0; i2 < 10; i2++) {long start = System.currentTimeMillis();for (int i = 0; i < 100000; i++) {test1();//用时:[4268, 4151, 4207, 4124, 4163, 4116, 4099, 4198, 4173, 4076]//test2();//用时:[4422, 4067, 4086, 4067, 4068, 4113, 4082, 4075, 4058, 4145]}long end = System.currentTimeMillis();sum.add(end - start);}System.out.println("用时:" + sum);}public static void test1() {logger.error("aaa{}ccc{}eee{}ggg{}iii{}kkk{}lll", "bbb", "ddd", "fff", "hhh", "jjj", "mmm");}public static void test2() {logger.error(new StringBuilder("aaa").append("bbb").append("ccc").append("ddd").append("eee").append("fff").append("ggg").append("hhh").append("iii").append("jjj").append("kkk").append("mmm").append("lll").toString());}
}

更多:slf4j比log4j更优秀的一点是可以使用占位符

注意:一个{},对应一个变量。