我通常使用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