在服务器上生成Excel电子表格。除了使用Node.js+SpreadJS,葡萄城官方推荐使用SpreadJS+GcExcel。该方案不仅可以解决批量绑定数据源导出Excel、批量修改大量Excel内容和样式、服务器端批量打印、生成PDF文档等需求,而且提供的组件性能远超行业标准。为了验证SpreadJS+GcExcel的处理性能,本文将对比在GcExcelforJava和Node.js中运行SpreadJS的数据。由于SpreadJS和GcExcel的组件功能非常丰富,本文只选取最常用的两个功能点进行对比,分别是设置区域数据和导出Excel文档。一、本次测试的几个前提由于Node.js是基于V8引擎执行JavaScript的,所以它的js也是基于事件机制的非阻塞单线程操作,它的文件I/O是异步执行的。Node.js之所以选择单线程的方式,是因为编码简单,开发难度低,“码农”的脑力消耗比较小;并且它的文件I/O是异步执行的,所以不需要Java需要创建和回收线程(Node.js的I/O操作也是底层的线程,这里不再讨论depthhere),这方面的开销比较小。但是单线程在复杂的计算上并不比多线程有优势,多线程也不能有效分配多核CPU进行优化。因此在Node.js中运行SpreadJS只能是单线程JS,这也会影响SpreadJS的数据处理性能。因此,为了获得更准确的测试结果,本文设计的测试用例在两种环境(Java和Node.js)均采用单线程执行,并选择更兼容Node.js的ActionsBatchI/O作为测试用例。2.Node.js和SpreadJS测试代码及结果:软件版本CPU内存Node.js16.10.0Intel(R)Core(TM)i7-9750HQCPU@2.80GHz32G测试代码:如下图,使用一个Performance类执行1000第二次设置数据导出Excel文档的操作。constfs=require('fs');//初始化模拟浏览器变量global.navigator=window.navigator;global.HTMLCollection=window.HTMLCollection;global.getComputedStyle=window.getComputedStyle;constfileReader=require('filereader');global.FileReader=fileReader;constGC=require('@grapecity/spread-sheets');constGCExcel=require('@grapecity/spread-excelio');GC.Spread.Sheets.LicenseKey=GCExcel.LicenseKey="你的许可证";constdataSource=require('./data');函数runPerformance(times){consttimer=`测试${times}次`;控制台时间(计时器);for(lett=0;t
