Search Wiki:
向Excel文件输出数据时,随着数据量的增加,时间将呈现何种曲线增长呢?周末闲来无事,写了个小程序做了一次非正式的性能测试。测试结果如下——
-----------------------------------------------------
输出方式 Rage for One Time Cell by Cell
-----------------------------------------------------
1000行×50列 4 秒 117 秒
5000行×50列 8 秒 492 秒
10000行×50列 17 秒 1,004 秒
20000行×50列 35 秒 2,035 秒
30000行×50列 67 秒 3,036 秒
40000行×50列 100 秒 3,954 秒
50000行×50列 182 秒 5,172 秒
60000行×50列 207 秒 6,733 秒
-----------------------------------------------------

※一些说明:
(1)程序使用Visual Basic 2008 Express Edition完成。
(2)由于我家里的电脑上没有安装Office 2003,只好将就着用Office 2007提供的Excel Object库(Microsoft Excel 12.0 Object Library)来做测试。
(3)测试使用我的笔记本
HP B1900
(CPU)Intel Core2 T5500 @1.66GHZ/1.67GHZ
(内存) 1GB
(4)针对两种Excel写入方式做了测试:
· Cell by Cell方式:每个单元格逐一赋值,多次写入。
· Range for One Time方式:先以二维数组保存所有要写入Excel的数据,一次性写入。
(5)针对不同数据量做了测试:
·1000行×50列
·5000行×50列
·10000行×50列
·20000行×50列
·30000行×50列
·40000行×50列
·50000行×50列
·60000行×50列
(6)Excel写入时采取每个单元格均写入10个半角字符,例如A3单元格的写入内容为“1-3ABCDEFG”。

※结论
(1)从所需时间上来比较,Range for One Time方式优势非常大。当然,在运行这一组测试的时候内存占用也较Cell by Cell方式多一些,机器明显慢了许多。不过,在机器配置许可的情况,还是建议尽量使用Range for One Time方式。如果迫不得已要使用Cell by Cell方式,在数据量小于1000行的情况下应该还是可以忍受的。
(2)不论Cell by Cell方式还是Range for One Time方式,Excel写入所需时间和写入数据量基本呈正比。这说明微软的Excel Object库还是比较稳定、可信的。
(3)也试了一下ExcelCreator.NET的执行结果,感觉不如Excel;不过对于少量数据,使用ExcelCreator还是有优势的。

※几篇放在Blogspot上的相关日志
http://liuchunhui.blogspot.com/2008/09/excel_07.html
http://liuchunhui.blogspot.com/2008/09/excel.html
http://liuchunhui.blogspot.com/2008/09/excel_3261.html
Last edited Oct 19 2008 at 5:27 PM  by stillicel, version 3
Updating...
Page view tracker