我正在使用 PHPExcel 和 php orm 来生成 excel5 电子表格,用于报告 Web 应用程序事务。
不得不写更多,我想知道 perl 解决方案是否会减少内存消耗并更快地生成该 excel 文件?
例如,使用调整大小的列创建 186 行和列,在 PHPExcel 上使用日期、数字和字符串等数据类型设置在 64 位、6 核、ssd 驱动器和太多 gb 内存上占用 91mb 内存和 62 秒, linux服务器。(数字不包括 orm)
在谷歌搜索了太多基本的 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
您必须将 like 与 like 进行比较才能获得明确的答案,但这里有一些关于 Spreadsheet::WriteExcel 的提示:
store_formula()
和repeat_formula()
方法来加速它们。有关更多信息,请参阅文档的使用公式时提高性能部分。set_optimization()
选项。请参阅Excel::Writer::XLSX 文档中的速度和内存使用情况。