文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
中文简体
为什么内存优化模式内存占用少?
当开启内存优化模式时,单元格将根据行落地磁盘,内存中只保留最新一行数据,所以内存优化模式最大内存占用等于数据最多一行的内存用量。
源码解析:
if (!self->optimize) { // 未开启内存优化模式...... } else { if (row_num < self->optimize_row->row_num) { // 当请求行号小于内存行号,无法获取行数据,故无法进行折返写入。 return NULL; } else if (row_num == self->optimize_row->row_num) { // 获取当前行信息,提供进行单元格写入。 return self->optimize_row; } else { // 当请求行号大于内存行号,则将内存中的行数据刷入磁盘。 // 重置内存中行数据,并赋予最新行号。 lxw_worksheet_write_single_row(self); row = self->optimize_row; row->row_num = row_num; return row; } }
为什么我本地导出比评测慢?
写入流程:创建临时文件 -> 写入 XML 文件 -> 结束写入 -> 分段读取临时文件并写入压缩文件;
从写入流程看,可将 xlsx 文件写入大致分为两大块,XML 写入 和 打包压缩文件。虽然写入 XML 文件这里可以利用操作系统缓冲区, 减少磁盘 IO 次数,但最后读取临时文件并写入压缩文件时存在将磁盘中的数据分段重新载入内存,并再次写入压缩文件,在这个过程中对主机的硬盘读取性能以及 CPU 处理压缩算法性能密切相关。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论