[英]Fast CSV parser in C++
我正在嘗試讀取帶有20k +行的.csv文件,每行有~300個字段。
我使用自己的代碼逐行讀取它,然后我將行分隔為字段,並將字段轉換為相應的數據類型(如整數,雙精度等)。 然后這些數據通過它們的構造函數傳遞給類對象。
但是,我發現效率不高。 花了大約1分鍾讀取這些20k +線並創建了20k +對象。
我用Google搜索了快速csv解析器,發現有很多選項。 我嘗試過其中一些,但對時間表現不太滿意。
有沒有人有更好的方法來讀取大型.csv文件? 提前謝謝了。
解析文件或處理文件的有效方法是在開始解析之前將盡可能多的文件讀入內存。
自計算機誕生以來,文件I / O一直是計算機系統中較慢的部分之一。 例如,解析數據可能需要1微秒。 從硬盤驅動器讀取數據可能需要1毫秒== 1000微秒。
我通過為數據分配一個大數組然后將數據讀入數組,使程序更快。 接下來,我處理數組中的數據並重復,直到處理完整個文件。
另一種技術稱為內存映射,其中OS根據需要處理將文件讀入內存。
請編輯您的帖子以顯示瓶頸所在的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.