使用ThreadScope在Haskell中使用命令行参数进行概要分析

时间:2017-01-29 00:30:30

标签: haskell haskell-stack threadscope

我从here了解到使用ThreadScope我需要使用事件日志和rtsoptions进行编译,例如" -rtsopts -eventlog -threaded"

我正在使用Stack,所以我的编译调用如下:

$ stack ghc -- -O2 -funfolding-use-threshold=16 -optc-O3 -rtsopts -eventlog -threaded mycoolprogram.hs

通常,我这样做:

$ stack ghc -- -O2 -funfolding-use-threshold=16 -optc-O3 -threaded mycoolprogram.hs

编译好。但是,我的程序需要2个且只有2个位置参数:

./mycoolprogram arg1 arg2

我试图添加RTS选项+RTS -N2 -l,如下所示:

./mycoolprogram arg1 arg2 -- +RTS -N2 -l 

或者

./mycoolprogram +RTS -N2 -l -- arg1 arg2

如何使用参数System.Environment.getArgs同时运行我的程序(例如here)并包含这些分析标记?

1 个答案:

答案 0 :(得分:2)

正如@sjakobi所说,您可以使用+RTS ... -RTS other argumentsother arguments +RTS ...表单,但也可以选择在环境变量GHCRTS中传递它们:

GHCRTS='-N2 -l' ./mycoolprogram arg1 arg2

GHC users guide中提供了更多信息。