【发布时间】:2014-07-12 15:36:43
【问题描述】:
有没有一种好方法可以从 Haskell 的分析中排除某些函数调用?
我正在加载字典的大型二进制转储文件,这需要几秒钟的时间,并且完全覆盖了我感兴趣的代码部分。
COST CENTRE MODULE %time %alloc
read_wordlist Wordlists 93.6 98.3
solve Solver 1.3 0.0
anagrams Evaluation 0.8 1.4
[...]
作为参考,我正在像这样加载字典
read_wordlist = do
ls <- fmap Text.lines (Text.readFile "data/straight-wordlist")
(return . Data.Set.fromList . string_read . toString . Prelude.head) ls
所有代码都在模块中分开(但很普通,等等)。
是否有一些 SCC 注释安排意味着我可以偷偷地完成所有开销加载,而不会将其计入我的整体统计数据?
【问题讨论】:
-
您是否尝试过将
Data.Set.fromList . string_read . toString . Prelude.head . Text.lines移动到一个单独的函数中,以便从文件中读取所有read_wordlist然后调用此函数?我还建议使用BangPatterns进行一些严格注释,以便您可以准确指出您的时间花在哪里。
标签: haskell annotations profiling ghc