硕正技术文档
Email: support@supcan.cn
  大数据性能测试
  在浏览器中一次性显示数千、数万行数据,通常被认为是不明智的,应该采用分页方式来显示。
  然而有些特殊场景,还真有这个需求,流行的 js 表格框架在处理大数据时总是显得力不从心,我们有些对性能敏感的用户已经察觉到这一点了。 那么硕正套件处理大数据的性能到底如何呢?我们为此做了一个有趣的性能实测。

  测试的方法很简单: 直接采用了“树列表”的第一个在线演示页 (t1.htm),根据其XML模板的数据结构(9列),我们准备了多份数据,从1万行、3万、..直到 50万行, 测试数据发布在 http://pan.baidu.com/s/1c0cUxrE, 您如果有兴趣也可以去下载下来实测一下。

  简单修改该页面源码, 将 Retrieve( ) 函数改成如下:
function Retrieve()
{
 var url = document.getElementById("source").value;
 var date1=new Date();
 AF.func("Load", url);
 var date2=new Date();
 var date3=date2.getTime() - date1.getTime();   //二个日期的毫秒差
 alert(date3);
}
  在演示页的“填入的数据”处输入测试数据的本地文件名,就能跑测试了, 建议开启“显示标尺”, 方便您查看到底加载了多少行数据:

  测试机的软硬件环境如下:
CPUIntel i5-2500k, 4核4线程内存4G
主频3.3G硬盘海盗船 SSD 60G
睿频3.7G操作系统Windows 8.1 Pro 64位
主板技嘉H67MA-D2H-B3浏览器Chrome 37版

  1万行的XML数据,测试结果如图, 基本在310毫秒左右:
  加载1万行数据才几百毫秒,这个结果已经非常令人满意了,但您可能会问:这是从本地磁盘加载数据, 如果在真实http环境、后端动态从数据库取数的话, 性能会如何呢?
  毫无疑问, 在真实应用环境下,性能肯定会差,甚至可能会差很多, 从原理来分析, 硕正的 Load 函数消耗的时间是从访问这个URL开始, 获得数据包,解析XML,直到将其加载到树列表中, 期间的时间消耗大致如下:

Load函数消耗时间  =  后端服务器处理耗时  +  网络传输耗时  +  硕正控件处理耗时

  因为后端处理、网络传输这两个部分不是硕正插件能控制得了的,事实上和硕正插件几乎无关。本测试直接从固态硬盘加载数据,相当于跳过了这二个部分, 最终只是测试硕正插件本身内部处理的性能。硕正插件的内部处理包括解析XML/JSON/TSV、把数据对象实例化并填充到表格的各个单元格内。


  测试包中的XML数据文件有多个,从1万行到50万行,我们每个都测试3次,去掉最大最小,得到的测试结果如下:
 1万行3万行5万行10万行50万行
耗时(毫秒)3109801,5303,00015,860
  从该表可以看出:

结论一.耗时和数据行数几乎成正比




  硕正支持的数据格式除了XML,还有像JSON、TSV这些,测试数据包中也备有这些格式的数据,如下是测试结果:
 XMLJSONTSV
5万行耗时(毫秒)1,4901,500340
50万行耗时(毫秒)15,86015,7703,880
  从上述耗时数据可以看出:

结论二.硕正解析 XML 和 JSON,性能相差无几;但 TSV 的性能比 XML 好 5 倍




  此外,您从测试数据的文件可以看出数据文件的尺寸: 5万行的XML数据大小已达14兆多,在局域网内传输尚可接受,在公网上传输将是非常耗时的!

结论三.XML,JSON, TSV 数据包的尺寸比例大约是 9 : 7 : 3

  可见,如果您真的需要查询大数据,建议采用 TSV 格式,或 1.0.87.0 版中新增加的 TSV-Ex 格式,能大大缩短网络传输上消耗的时间。




  我们都知道 Google Chrome 浏览器的性能是最好的, 但硕正插件加载数据完全是在它内部进行的,应该和浏览器种类毫无关系,我们不妨也在此测试一下,以下是测试结果:
 Chrome 37IE 11
5万行XML数据耗时(毫秒)1,4901,480
5万行TSV数据耗时(毫秒)340350

结论四.硕正插件内部处理的性能,和浏览器种类无关





  上面的测试都是在 i5 2500k 的较高端的 PC 上做的,我们另外找了一台较新但廉价的迷你电脑(才1千多人民币), 配置为:
CPUIntel i5-3317U, 2核4线程内存4G
主频1.7G硬盘SSD 60G
睿频2.4G操作系统Windows 8.1 Pro 64位
主板Intel ChiefRiver浏览器Chrome 37版
  测试下来表现很好,有点超乎预想:
 高端PC
(Intel i5-2500k)
低端PC
(Intel i5-3317U)
5万行XML耗时(毫秒)1,4902,010
5万行JSON耗时(毫秒)1,5002,010
5万行TSV耗时(毫秒)340460
  U系列是 Intel 的超低电压、低功耗的入门型CPU,很多笔记本都是采用了U系列的CPU,可见:

结论五.主流的主频在2G左右的笔记本电脑, 完全能胜任硕正大数据的性能压力




  最后,我们对插件消耗多少内存作了一下分析,在IE 11浏览器上测试,打开任务管理器,将其“更新速度”调到“高”,将IE浏览器进程消耗的内存记录到如下的表格。我们发现,硕正插件在解析XML过程中,内存耗用不断加大,当处理结束后,马上从峰值跌下,所以表格中有“瞬间峰值”和“稳定耗用”二个指标:
 瞬间峰值耗用(MB)稳定耗用(MB)
不加载数据时3737
5万行XML10145
50万行XML657357
  硕正插件理论上最多能达到100万行数据,但我们在做超过50万行的压力测试时,发现系统开始不稳定了,由于50万行已经是比较罕见了,所以就此略过,不再追究。