很长时间没跟大家共同进步了,一直都在忙某行业的深潜和发掘;所以疏远了技术的研究。刚好昨天遇到一个行业软件进行大数据导入后通过算法匹配出现报错的情况。简单地先说一下这个行业软件框架,用的是SQLlite数据库,WINFORM做的客户端,后端通过服务进行数据处理;客户端与后端服务就是通过HTTP协议传输。大体就这样,先不说什么多并发及用户控制等,反正现成的前人载树也就这样。那目前遇到的问题就是当用户导入大批量数据后,服务端写库成功后,要对数据进行逻辑分析将结果呈现在客户端。刚才都说因为客户端是通过HTTP协议传输所以客户端直读导入数据后post发送给服务端就是了,服务端写库完善,这块基本没毛病,毛病就是在对数据处理这边。大数据一处理就耗时而客户端等待时间过长就会报错。
那么我们先要把在那个处理数据耗时点找出来。怎么找呢?我这边就是通过在程序中埋入时间点,从程序开始埋入一个起步时间然后再在不同点进行时间比较;不废话直接上码。
先定义开始时间:
代码语言:javascript复制DateTime beforDT = System.DateTime.Now;
System.Diagnostics.Debug.WriteLine("Save_start====>" beforDT);
获取执行过程中第一定义时间
代码语言:javascript复制DateTime afterDT = System.DateTime.Now;
TimeSpan ts = afterDT.Subtract(beforDT);
System.Diagnostics.Debug.WriteLine("Save_start==A==>" ts.TotalMilliseconds);
第二节点时间
代码语言:javascript复制 afterDT = System.DateTime.Now;
ts = afterDT.Subtract(beforDT);
System.Diagnostics.Debug.WriteLine("Save_start==B==>" ts.TotalMilliseconds);
这样就可以通过输出窗口获得程序的顺序和时间,对比就能查出那个耗时然后就进行处理。
通过分析后发现是由于程序中的UPDATE语句导致耗时比较长细看之下一个更新表竟然用了2条update所以就这里卡了,因此将其改为一条搞掂。
这样由原来执行的时间大大减半,之后再通过对程序的多线程和async异步进行处理;重新测试就解决大数据报错的问题,效率也是钢钢的。