最近在搞导出的一个服务,老板让对一些框架做一个分析,所以有了这篇文章。
服务器配置:2核16g内存
服务配置:java最大堆栈内存为1g
- EasyExcel 阿里维护的一款导出框架,导出的为
xlsx
,在单sheet页上,理论上没有行数限制 - EasyPoi 这是比较常见的,导出格式为
xls
,在条数超过6万行,会增加sheet页 - CSV导出,更常见了,一种以逗号分割格式的文件,不存在行数限制
导出的文件有67列
EasyExcel
导出条数 | 查询时长 | 写入时长 | 共计时长 | 文件大小 |
---|---|---|---|---|
50万条分页 | 26509 | 83168 | 110540 | |
50万条不分页 | gc | |||
20万条不分页 | 10565 | 33397 | 43976 | 160m |
10万条不分页 | 5728 | 20527 | 26255 | 65.49m |
1万不分页 | 637 | 1863 | 2528 | 2.52m |
EasyPoi
EasyPoi 有个大数据导出的方法,但是与EasyExcel相比,实在是太慢,所以就不测它的其他条数的分页了。
导出条数 | 查询时长 | 写入时长 | 共计时长 | 文件大小 |
---|---|---|---|---|
50万条分页 | 29117 | 185548 | ||
50万条不分页 | gc | |||
20万条不分页 | gc | |||
10万条不分页 | gc | |||
1万不分页 | 873 | 624 | 1497 | 11.4m |
CSV
导出条数 | 查询时长 | 写入时长 | 共计时长 | 文件大小 |
---|---|---|---|---|
50万条分页 | 没测 | |||
50万条不分页 | gc | |||
20万条不分页 | 13040 | 9847 | 22887 | 95.94m |
10万条不分页 | 7518 | 3788 | 11306 | 46.21m |
1万不分页 | 657 | 577 | 1234 | 5.27m |
说下自己通过这个表看出来的结论吧:有不对的还请指正。
- 首先内存为1g时,50万条数据直接查出来,会直接gc,所以在不分页的情况下,都导不出来数据
- 在分页的情况下,阿里的easyExcel快75s
- 值得注意的是,导出的文件大小,同样的条数,xlsx文件要比xls小很多
- CSV是直接写入文件,所以又快又省事,但是客户人要excel呀。。。
相关文章
暂无评论...