ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

性能浪费的日志案例与使用Lambda优化日志案例

2022-07-20 11:05:02  阅读:129  来源: 互联网

标签:showLog String 案例 拼接 日志 public Lambda


Lambda的延迟执行

有些场景的代码执行后,结果不一定会被使用,从而造成性能浪费。而Lambda表达式是延迟执行的,这正好可以作为解决方案,提升性能

性能浪费的日志案例

注:日志可以帮助我们快速的定位问题,记录程序运行过程中的情况,以便项目的监控和优化。
一种典型的场景就是对参数进行有条件使用,例如对日志消息进行拼接后,在满足条件的情况下进行打印输出∶ 

package day01.demo01;
/*
日志案例
发现以下代码存在的一些性能浪费的问题
调用showLog方法,传递的第二个参数是一个拼接后的字符串先把字符串拼接好,然后在调用showLog方法
showvLog方法中如果传递的日志等级不是1级那么就不会是如此拼接后的字符串
所以感觉字符串就白拼接了,存在了浪费
 */
public class demo01Override {
    public static  void  showLog(int level,String messsage){
        if (level==1){
            System.out.println(messsage);
        }
    }

    public static void main(String[] args) {
        String m1 ="Hello,Word ";
        String m2 ="offer,World ";
        String m3 ="wx,qq";

        showLog(1,m1+m2+m3);
    }
}

 使用Lambda优化日志案例

package day01.demo01;



/*
使用Lambda优化日志案例L ambda的特点:延迟加载
Lambda的使用前提,必须存在函数式接口
 */
public class Dem02Lamber {
    public static  void showLog(int level, MessageBuilder mb){
        if (level==1){
            System.out.println(mb.builderMessage());
        }
    }

    public static void main(String[] args) {
        String m1 ="HelloWord ";
        String m2 ="offerWorld ";
        String m3 ="wxqq";

        /*
        使用Lambda表达式作为参数传递,仅仅是把参数传递到showLog方法中只有满足条件,日志的等级是1级
        才会调用接口MNessageBuiLder中的方法builderMessage才会进行字符串的拼接
        如果条件不满足,日志的等级不是1级
        那么MessageBuilder接口中的方法builderMessage也不会执行所以拼接字符串的代码也不会执行
        所以不会存在性能的浪费
         */

        showLog(2,()->{
            return m1+m2+m3;
        });
        showLog(1,()->{
            System.out.println("不满足条件不执行");
            return m1+m2+m3;
        });


    }
}

 

标签:showLog,String,案例,拼接,日志,public,Lambda
来源: https://www.cnblogs.com/x3449/p/16497057.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有