初步开发完成,一会儿要提测
过程中有一点让我及其在意,就是JS的执行效率。在改变了
某个地方
之后快了100倍 以下探究具体原因
利用JSON+数组结构存储数据的行列(时间与数目)不同方式导致的数组个数不同 使得耗费巨量时间:
方式1
测试以下代码()
console.time('time');
var json={
};
for(var j=0;j<DEFECT_CNAME.length;j++){
//把缺陷名按顺序放入JSON中 为对应DEFECT_CNAME以便循环输出
json[DEFECT_CNAME[j]]=new Array();//放入数组
for (var i = 0; i < PRODUCE_TIME.length; i++) {
json[DEFECT_CNAME[j]][i] = new Array();
for (var x= 0; x < 3; x++) {
if(x==0){
json[DEFECT_CNAME[j]][i][x] = PRODUCE_TIME[i];
}else{
json[DEFECT_CNAME[j]][i][x] = 0;
}
}
}
}
console.timeEnd('time');
var j=0;
执行结果如下:
耗时
方式2
console.time('time');
var json={
};
for(var j=0;j<DEFECT_CNAME.length;j++){
//把缺陷名按顺序放入JSON中 为对应DEFECT_CNAME以便循环输出
json[DEFECT_CNAME[j]]=new Array();//放入数组
for (var i = 0; i < 2; i++) {
json[DEFECT_CNAME[j]][i] = new Array();
for (var x= 0; x < PRODUCE_TIME.length; x++) {
json[DEFECT_CNAME[j]][i][x] = 0;
}
}
}
console.timeEnd('time');
执行结果如下:
耗时
确实快了三倍左右,但显然问题不在这里
而在真正完成所有开发任务的三天后,速度如图:![在这里插入图片描述](https://img-blog.csdnimg.cn/20210208105854722.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JlYXRpbmd3b3JsZGxpbmU=,size_16,color_FFFFFF,t_70#pic_center)
回想下开发过程,大概率得益于:
1、数据那边终于给表加了索引。
2、我在后台查询根据分页数和展示数做了限制,前后台需要处理的数据量小了,一开始依次查五万条…
3、优化了查询语句,修改SQL,利用双GROUP BY将初步的数据处理放在了查询上,简化了前后台处理数据的逻辑。
技术总结:
数据处理的优先级是:
1、
数据库优化绝对的优先,分库分表/加索引等手段,效率最高,优化效果最好;
2、
然后才是SQL语句来根据不同需求查表做处理,比后台前台得处理更有效率;
3、
SQL处理不了的,需要根据用户得操作来的那些需求的逻辑,才是真正需要用前后台的JAVA/JS来码代码处理的。
但这部分也要考虑很多,例如JVM的对象gc问题控制程序的对象数量,逻辑优化少用递归,少用if多用switch,利用语法糖,多克隆接口,特定情况甚至要考虑利用多线程…java编程能力方面提升空间还很大
4、
前台JS非必要不写复杂逻辑,不同客服访问的客户端性能不同,可能会造成不同的用户体验感
5、
这次开发学到了很多东西 更重要的是学到了很多解决问题的方法 感觉自己获得了成长
最最最最重要的是 自己第一次真正的在开发中,在工作中感受到了它所带来的快乐,乐在其中的工作状态真的很棒
希望未来能将这中势头持续下去