我有一個包含股票交易歷史的CSV文件,其大小爲70兆字節。 我想在其上運行我的程序,但不想每次啓動都要等待30秒。編譯Haskell中的大數據結構
1. 只是翻譯成CSV文件Haskell的源文件是這樣的:
From | TO
-------------------------------------------
1380567537,122.166,2.30243 | history = [
... | (1380567537,122.166,2.30243)
... | , ...
... | ]
2. 使用模板哈斯克爾解析文件編譯時。
嘗試第一種方法我發現我的GHC在嘗試編譯一個列表(70 mb源代碼)3小時後吃了12GB的內存。
那麼TH是單一的可用方法?或者我可以在源文件中使用硬編碼的大數據結構? 爲什麼GHC不能編譯文件?由於複雜的優化或其他原因,是否會發生組合爆炸?
使用像bytestring和attoparsec這樣的快速庫會將時間減少到小於30秒。 – Satvik
http://stackoverflow.com/a/6403503/83805 –
可能的重複你試過[木薯](http://blog.johantibell.com/2012/08/a-new-fast-and-easy-to -use-CSV-library.html)? – jtobin