【发布时间】:2013-10-01 05:56:16
【问题描述】:
我有一个包含股票交易历史的 CSV 文件,其大小为 70 兆字节。 我想在上面运行我的程序,但不想每次启动都等待 30 秒。
1。 只需将 CSV 文件翻译成 Haskell 源文件,如下所示:
From | TO
-------------------------------------------
1380567537,122.166,2.30243 | history = [
... | (1380567537,122.166,2.30243)
... | , ...
... | ]
2。 使用 Template Haskell 解析文件编译时间。
尝试第一种方法后,我发现我的 GHC 在尝试编译一个列表(70 mb 源代码)3 小时后消耗了 12gb 的内存。
那么 TH 是唯一可用的方法吗?或者我可以在源文件中使用硬编码的大数据结构? 为什么GHC不能编译文件?是不是因为复杂的优化什么的而导致组合爆炸?
【问题讨论】:
-
使用 bytestring 和 attoparsec 等快速库将时间缩短到 30 秒以内。
-
你试过cassava吗?
-
唐,是的,它是相关的,但是关于这个问题的答案是关于将字节串文字插入代码然后将其转换为结构;但我想在我的程序中获得已经编译的结构。
-
jtobin,问题不在于它,但我会尝试一下。还是谢谢你。
标签: haskell ghc template-haskell