本项目用于Eec性能测试,分别将以1k, 5k, 10k, 50k, 100k, 500k, 1000k 7个数量级进行读写测试
除 Eec 外还加入了 Fastexcel 和 Easyexcel 进行对比测试
测试文件统一保存在excel-simple目录下,请不要随意改变日志输出格式,否则将导致Reporter运行时异常。
特别申明:性能测试不代表实际使用场景,实际使用时基本不会超过1万条数据,所以在选择Excel工具时不要参考压测结果,不要参考压测结果,不要参考压测结果
执行build脚本
执行writer脚本,其中warmup是一个预热方法,统计时将被忽略。如果对某个工具感兴趣也可以复制脚本中的某行来执行
除Easy外其它两款工具均使用inlineStr
和shared
两种模式测试,测试数据包含int, long, date和15个字符串,其中5列纯英文,10列中英混合,使用shared
生成的文件名包含shared标记
执行reader脚本,将Excel行数据转对象统计行数,这里并不会收集对象放到内存,所以不影响内存使用。
如果传入文件名则会读取指定文件名,否则将读取excel-simple目录下的所有文件
执行完测试后使用report脚本查看统计结果,性能比较是按每秒处理多少单元格来计算,单元格是excel最小单位用它计算比单纯按行比较更精准
- eec: 0.5.11
- fastexcel: 0.15.7
- easyexcel: 3.3.2
只比较运行时必要依赖,所有依赖包均放到各自*-lib下可自行比较
+------+------+--------+
| Eec | Fast | Easy |
+------+------+--------+
| 0.9m | 1.7m | 21.5m |
+------+------+--------+
测试机CPU:Intel i7-1051U @ 1.80GHz,内存:16G
平均耗时:读写总耗时/读写次数
Cells/s: 平均每秒处理多少单元格
+----------+------+------+------+------+--------+--------+--------+----------+
| TOOLS | 1k | 5k | 10k | 50k | 100k | 500k | 1000k | Cells/s |
+----------+------+------+------+------+--------+--------+--------+----------+
| Eec(w) | 122 | 356 | 595 | 2756 | 5504 | 27364 | 62339 | 319620 |
| Fast(w) | 195 | 645 | 1127 | 5155 | 10879 | 50341 | 108775 | 178597 |
| Easy(w) | 583 | 1338 | 1703 | 5720 | 11374 | 53585 | 105293 | 176250 |
| Eec(r) | 32 | 115 | 183 | 922 | 1812 | 9222 | 22418 | 905820 |
| Fast(r) | 70 | 225 | 279 | 1357 | 2653 | 15775 | 28128 | 653525 |
| Easy(r) | 111 | 312 | 499 | 2400 | 4896 | 24337 | 47316 | 396480 |
+----------+------+------+------+------+--------+--------+--------+----------+
| ↓Shared String↓ |
+----------+------+------+------+------+--------+--------+--------+----------+
| Eec(w) | 302 | 1110 | 2644 | 7037 | 11532 | 51317 | 102829 | 179068 |
| Fast(w) | 143 | 574 | 1112 | 5626 | 12074 | 70770 | 223057 | 101016 |
| Eec(r) | 52 | 316 | 259 | 1247 | 2546 | 13643 | 34518 | 602016 |
| Fast(r) | 116 | 270 | 324 | 1544 | 3234 | 19962 | 44819 | 450467 |
| Easy(r) | 218 | 1175 | 1749 | 6523 | 13542 | 68384 | 142516 | 135212 |
+----------+------+------+------+------+--------+--------+--------+----------+
性能比较:每秒处理单元格数量比较[A vs B = (A - B) / B]
+--------+--------------+--------------+--------------+
| | Eec vs Fast | Eec vs Easy | Fast vs Easy |
+--------+--------------+--------------+--------------+
| Write | 78.96%↑ | 81.34%↑ | 1.33%↑ |
| Read | 38.61%↑ | 128.47%↑ | 64.83%↑ |
+--------+--------------+--------------+--------------+
| ↓Shared String↓ |
+--------+--------------+--------------+--------------+
| Write | 77.27%↑ | - | - |
| Read | 33.64%↑ | 345.24%↑ | 233.16%↑ |
+--------+--------------+--------------+--------------+
- 运行Reader测试之前请先执行Writer生成测试文件