Simon.Sun 发表于 2022-10-31 18:26:00

干货必读提升性能:六、打印性能

本帖最后由 Simon.Sun 于 2022-11-15 10:47 编辑

想必大家在业务中会有打印的需求,在活字格中,您可以打印页面,使用打印/导出页面到 PDF 命令,将当前页面或其他页面导出到 PDF 中,然后您就可以将其打印出来。但不知道大家有没有遇到过打印会比较慢的情况,尤其是当打印的页面上有表格的时候。
下面将通过一个例子来说说使用活字格打印功能时,几个影响活字格打印性能的地方。比如下面这个页面:这个页面十分简单,就是简单放了个表格和打印按钮,还有查询条件框和表格数据条数。下面这张表格展示了分别导出 100、500、1000 条数据的打印耗时。
数据条数打印耗时(ms)
1002761
2777
2778
5003390
3248
3344
10003447
3348
3399
可以看到,随着数据条数的增多,打印时间有一定的增长。注:这边只是做了简单的测试,实际的运行效果根据运行环境会有所差异。

但可以看到,这时候并没出现一开始说的特别慢的情况。下面我会修改下页面,再来看下导出的效果,修改的地方也很简单,就是将上述表格的操作列从超链接修改成单元格,如下图所示:这时候我们再来导出下看看效率如何:
数据条数打印耗时(ms)
1005098
4895
4889
50012483
12723
12302
100024774
25014
25139
可以看到将操作列从超链接单元格格式换成按钮,打印耗时会增加很多。为什么会这样呢?其实导出的时候,表格上的单元格类型和图片都会生成图片,再显示到 PDF 中,像表格中有按钮还有其他图标数据量又比较大,所以一个一个生成图片,导致性能非常差。从上面的打印时间也能看出这这一点。所以呢,建议大家在使用打印命令打印表格数据时尽量只放数据,而不要放一些其他类型的单元格,比如按钮,比如设置图标等。这些类型的按钮会比较占用打印的性能。并且打印往往是为了将业务数据打印出来,类似于操作这种按钮往往是打印时不关心的,所以最好能够单独设计专门用来打印的页面,和业务展示页面分开。
打印的性能还和其他因素有关,打印本身要和计算机的硬件和操作系统交互,和计算机本身的性能也有很大的关系。从上面的数据也能看出,同样是 100、500 或 1000 条数据,每次测试的时间是不同的,或者感兴趣的读者也可以运行下面提供的 demo,你会发现数据和我这里写的也会有所不同。这些差异往往和计算机运行时的状态有关。说这个的原因就是如果大家有对打印需求特别大的场景,建议将打印的服务单独部署到一台机器上,换句话说让这条机器专门用来打印,从而提高打印的效率,也能避免因为打印的性能损耗导致业务系统的其他功能也不能正常使用。活字格其他和导出有关的命令,比如 导出表格到 Excel 和 导出页面到 Excel 的性能也会受到上面提到的因素影响,大家感兴趣的可以去尝试一下。总结在打印数据时,因为特殊类型的单元格会生成一个一个图片,比较占用性能。为了能够保证打印的效率,只放和数据相关内容(必要的话建议将打印页面单独设计)。此外计算机本身的性能和打印效率也有直接影响,如果业务对打印功能需求特别大,建议能够将打印服务单独部署一台机器。



页: [1]
查看完整版本: 干货必读提升性能:六、打印性能