| 硕正技术文档 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);
}
在演示页的“填入的数据”处输入测试数据的本地文件名,就能跑测试了, 建议开启“显示标尺”, 方便您查看到底加载了多少行数据:
测试机的软硬件环境如下:
CPU | Intel 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万行 |
耗时(毫秒) | 310 | 980 | 1,530 | 3,000 | 15,860 |
从该表可以看出:
结论一.耗时和数据行数几乎成正比
硕正支持的数据格式除了XML,还有像JSON、TSV这些,测试数据包中也备有这些格式的数据,如下是测试结果:
| XML | JSON | TSV |
5万行耗时(毫秒) | 1,490 | 1,500 | 340 |
50万行耗时(毫秒) | 15,860 | 15,770 | 3,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 37 | IE 11 |
5万行XML数据耗时(毫秒) | 1,490 | 1,480 |
5万行TSV数据耗时(毫秒) | 340 | 350 |
结论四.硕正插件内部处理的性能,和浏览器种类无关
上面的测试都是在 i5 2500k 的较高端的 PC 上做的,我们另外找了一台较新但廉价的迷你电脑(才1千多人民币), 配置为:
CPU | Intel 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,490 | 2,010 |
5万行JSON耗时(毫秒) | 1,500 | 2,010 |
5万行TSV耗时(毫秒) | 340 | 460 |
U系列是 Intel 的超低电压、低功耗的入门型CPU,很多笔记本都是采用了U系列的CPU,可见:
结论五.主流的主频在2G左右的笔记本电脑, 完全能胜任硕正大数据的性能压力
最后,我们对插件消耗多少内存作了一下分析,在IE 11浏览器上测试,打开任务管理器,将其“更新速度”调到“高”,将IE浏览器进程消耗的内存记录到如下的表格。我们发现,硕正插件在解析XML过程中,内存耗用不断加大,当处理结束后,马上从峰值跌下,所以表格中有“瞬间峰值”和“稳定耗用”二个指标:
| 瞬间峰值耗用(MB) | 稳定耗用(MB) |
不加载数据时 | 37 | 37 |
5万行XML | 101 | 45 |
50万行XML | 657 | 357 |
硕正插件理论上最多能达到100万行数据,但我们在做超过50万行的压力测试时,发现系统开始不稳定了,由于50万行已经是比较罕见了,所以就此略过,不再追究。