6金币
本帖最后由 ch.yang 于 2019-11-12 18:41 编辑
我在使用spreadjs 产品时遇到一个性能问题。我使用excelio去导出一个Excel文件时,出现了内存不足的情况。
用于导出Excel的ssjson大约120M左右,我能提供的内存是3个G,导出时直接内存爆掉了。。
我的运行环境是用Nodejs jsdom加载html,在后台导出Excel。因为业务原因,我只能放在后台导出Excel(后来我也尝试过前台导出,IE11直接挂。。这不行,客户要求IE11。。。)
我想问的是:
1.有没有什么办法可以节省些内存,导出时间长一点也可以接受,但内存不能超过3个G。
2.ssjson的优化方面,我已经把我用到的style都做成namedStyle了,style方面尽可能做小了。还有其他的可以优化减小ssjson size的办法吗?我的ssjson就是数据多。
我的ssjson太大了,没法上传。。
但里面的内容是有8个sheet,每个sheet有200列,1800行。每个单元格的数据都是999,999,999。
另外,我做了一些测试。测试环境win10 1903 16G内存 浏览器都是最新版的。
IE11在导出Excel文件时,直接崩溃,画面重新打开。。
Edge在导出Excel时,所用内存直接飙到4G多。卡了一会后,终于下载下来了。
Chrome在导出时,所用内存570M左右,等了一下就出来了。
Nodejs 环境下,利用jsdom,导出Excel时,用了2G多的内存,但是有时也会飙到3G多。
Chrome和Nodejs用的不都是V8引擎嘛,为什么差距这么大呢?
我购买的spreadjs 版本是12.2.4。
Nodejs 10.15
|
最佳答案
查看完整内容
经电话沟通,原因是namestyle的循环设置太多导致性能变慢,建议namestyle做一个去重处理,同样的样式设置为一个namestyle,您试一下电话沟通的解决方案,有什么问题咱们在这个帖子继续沟通
|