我通常使用csv parser中描述的方法来读取电子表格文件。但是,当读取大约40列和250K行数据的64MB文件时,大约需要4分钟。在原始方法中,使用CSVRow类逐行读取文件,并使用专用向量将所有数据存储在一行中。有效地读取C++中的大型电子表格文件
有几件事情需要注意:
- 我做的矢量的储备足够的容量,但没有太大的帮助。
- 我还需要在读取每行时创建某个类的实例,但即使代码刚刚在数据中读取而未创建任何实例,也需要很长时间。
- 该文件以制表符分隔而不是逗号分隔,但我认为它不重要。
由于在该文件中的某些列是不可用的数据,我改变该方法以具有私人字符串构件来存储所有的数据,然后找到第(n-1)个的位置和第n个分隔符获取有用的数据(当然还有许多有用的列)。通过这样做,我避免了一些push_back操作,并将时间缩短了2分多钟。但是,这对我来说似乎还太长。
这里是我的问题:
有没有办法更有效地读出这样的 电子表格文件?
我应该通过缓冲区 而不是逐行读取文件吗?如果是这样,如何通过缓冲区读取 并使用csvrow 类?
- 我还没试过提升标记化器,是 那效率更高?
谢谢你的帮忙!
沉重的堆流失。阅读:http://blogs.msdn.com/b/ricom/archive/2005/05/10/performance-quiz-6-chinese-english-dictionary-reader.aspx?wa=wsignin1.0 – 2010-06-24 14:53:23