在 Haskell 中使用带有命令行参数的 ThreadScope 进行分析
Profiling with ThreadScope with command line arguments in Haskell
我从 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
(例如 )并包含这些分析标志?
正如@sjakobi 所说,您可以使用 +RTS ... -RTS other arguments
或 other arguments +RTS ...
形式,但也可以选择将它们传递到环境变量 GHCRTS
:
GHCRTS='-N2 -l' ./mycoolprogram arg1 arg2
丢失的更多信息可在 GHC users guide 中找到。
我从 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
(例如
正如@sjakobi 所说,您可以使用 +RTS ... -RTS other arguments
或 other arguments +RTS ...
形式,但也可以选择将它们传递到环境变量 GHCRTS
:
GHCRTS='-N2 -l' ./mycoolprogram arg1 arg2
丢失的更多信息可在 GHC users guide 中找到。