我正在使用PHPExcel和php orm为Web应用程序事务生成报告生成excel5电子表格。
不得不写更多内容,我想知道perl解决方案是否会减少内存消耗并且生成excel文件的速度更快?
例如,使用调整大小的列创建186行和最多BG的列,PHPExcel上的日期,数字和字符串等数据类型设置占用了91mb的内存,64位,6核,ssd驱动器占用了62秒gb的内存,linux服务器。 (数字不包括orm)
答案 0 :(得分:3)
我在谷歌上搜索了太多基本的perl用法,函数之后,我自己测试了它,所以这里是:
此处显示的统计数据与我的问题有很大差异,因为我每行都有一个外部api调用,这花费了大量时间。
php的内存统计是不创建任何excel文件和创建它之间的最大使用差异,而使用perl我使用了valgrind。 (这里也忽略了我的问题中的记忆统计数据)
另外,我没有使用管道将我的php orm中的值传递给perl(本来可能更快),也没有在perl中执行查询,因为我不想深入研究这个测试的perl。我只是将一个json_encoded字符串写入php的文件中,使用exec()调用perl脚本,然后读取文件并解析perl中的json字符串。
我使用了两个库的最新版本
创建一个带有基本粗体格式的标题行,
列数最多为180行的数据,包括BG
在一半列上应用了一堆日期和数字格式,
并自动调整列的大小。
使用PHPExcel:4.94秒,60,191 mb
使用Perl Spreadsheet :: WriteExcel:0.01秒,13,193 mb
答案 1 :(得分:1)
你将不得不与喜欢进行比较以获得明确的答案,但这里有一些关于Spreadsheet :: WriteExcel的指示:
store_formula()
和repeat_formula()
方法加速它们。有关详细信息,请参阅文档的Improving performance when working with formulas部分。set_optimization()
选项,否则Excel :: Writer :: XLSX的性能和内存使用情况不如Spreadsheet :: WriteExcel。请参阅Excel :: Writer :: XLSX文档中的Speed and Memory Usage。