博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
悠然乱弹:从几个方法的重构讲开去--性能大优化
阅读量:5767 次
发布时间:2019-06-18

本文共 884 字,大约阅读时间需要 2 分钟。

现在还存在多次扫描处理的问题,也就是说虽然代码结构性重构是成功的,但是性能问题还是没有根本解决。

在给出解决方案之前,需要对这个处理方式缕一缕:

处理方式1:每次遍历全路径找到待处理文件,文件然后批量进行处理。优点是处理起来比较简单,但是会重复扫描。

处理方式2:一次遍历所有文件,然后对每个文件进行注解检测。扫描全路径只有一次,然后要把每个文件与过滤器进行比较如果比较成功那就做,比较不成功就不做。

稍加分析就会发现,两种方式的比较次数是一样的,但是第二种方案遍历文件的次数就少到极限了,还能比1次更少么??

这次的做法就有点复杂了(相对的,实际上也很简单),做一个过滤器,里面放个Map存储过滤器:处理器。

对于每个一个文件,都对所有的过滤器进行校验,如果校验成功,就执行对应的处理器。

1
2
3
4
5
6
7
8
9
10
11
public
class
ComplexFileFilter
implements
FileObjectFilter {
    
Map<FileObjectFilter,FileObjectProcessor> filterProcessorMap;
    
public
boolean
accept(FileObject fileObject) {
        
for
(FileObjectFilter filter:filterProcessorMap.keySet()){
            
if
(filter.accept(fileObject)){
                
filterProcessorMap.get(filter).process(fileObject);
            
}
        
}
        
return
false
;
    
}
}

呵呵,性能的问题也提升完毕了。

至此,从几个看似重复的方法,我们通过层层分析,细致推理,终于找到了内部的复杂关系,通过重构,给程序员以便捷的开发与扩展,给使用者以高效的性能和一目了然的逻辑,皆大欢喜了。

总结:许多的时候,一些纠结,重复,无从动手,都是有其内在的复杂因素的,之所以剪不断理还乱,是因为没有抓住实质,但只要把它理顺了,其实各干干的,就简单了。

转载地址:http://qbdux.baihongyu.com/

你可能感兴趣的文章
Eigen ,MKL和 matlab 矩阵乘法速度比较
查看>>
带三角的面包屑导航栏(新增递增数字)
查看>>
Web应用程序安全与风险
查看>>
codeforces 984 A. Game
查看>>
CSS居中
查看>>
One Person Game(概率+数学)
查看>>
CodeForces 258B Little Elephant and Elections :于1-m中找出七个数,使六个数里面的4和7个数比第七个数严格小:数位dp+dfs...
查看>>
MAP
查看>>
手把手教你测——上网快鸟
查看>>
线上filebeat部署文档和使用方法
查看>>
数据库(一)
查看>>
python Class:面向对象高级编程 __str__ / __repr__
查看>>
简练软考知识点整理-项目配置审核
查看>>
hadoop发行版本之间的区别
查看>>
柏科数据与Veeam建立战略合作关系
查看>>
引领PCB行业变革捷配开启免费打样新时代
查看>>
SpringBoot基础篇之重名Bean的解决与多实例选择
查看>>
【更新】Essential Studio for ASP.NET MVC更新至2018 v4(一)
查看>>
OSPF 01
查看>>
什么是40G QSFP+ AOC有源光缆,有何应用特点
查看>>