性能浪费的日志案例与使用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;
        });


    }
}
复制代码

 

posted @   zj勇敢飞,xx永相随  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示