1.业务系统主要的就是功能的稳定,流畅性.
最近客户提出某统计功能数据加载到页面很慢.反映到运维工程师处,运维跟我说之后我(研发),
我看了看代码,有几处代码确实需要优化,统计功能调用了4次服务端,每一次客户端调用服务端的时候返回结果3S左右,有三次调用服务端,一共大约耗时6S左右,(VS2022打断点有代码执行时间)
.然后做了SQL语句优化, 客户端点按钮到整体数据显示在容器里面需要半分钟.
C# 计时器
//引用
using System.Diagnostics;
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
.....代码....
stopwatch.Stop();
//写入日志
Log.Write("外面日志时间:" + stopwatch.ElapsedMilliseconds / 1000);
最后发现是一处代码有很大问题.用了foreach(){ foreach(){} } 双循环, 简直就是依托答辩,屎山, 里面foreach 一次需要40ms,循环7次, 但是最外面的foreach 需要循环50次左右, 循环里面也没有调用接口,但是有一处需要使用缓存里面的数据(上万条),就这一个双循环就要 十几秒,之前没出现问题是因为数据量小,未出现严重的bug.
我将整个功能都调整了一遍,系统显示还是慢,测试新查询的统计功能直接在我手上腰斩了,我又将功能整体放在了存储过程中(存储过程的代码图我就不贴了,怕被告),用了几个小时写好了, 查询出来的结果用了不到0~2S,大大提升了系统的效率,仅查询功能性能提升了14倍左右,奉劝大家,只要关于统计相关的功能,建议使用存储过程.
系统里面有很多统计功能,所有的都没有使用存储过程或视图,基本都在服务端SQL 拼接,用的是.net2 或.net4 服务端没有使用所谓的异步,客户端使用了Thread也只是防止系统假死, 某球用, 老系统版本升级 此路任重而道远.
不说了还有几个统计要改.