我正在尝试分析我的程序,它使用了hashables库和其他库。我不想分析我的代码的依赖关系,我只想分析我的代码(也许还有依赖关系的入口点)。我正在使用stack build --profile或stack build --executable-profile构建,但在我的配置文件中总是收到这样的噪音(以下是profiterole输出)。我如何才能跳过所有这些,并且只从我的包中删除配置文件代码?
...
48.8 10.9 3.5 Data.Hashable.Generic ghashWithSalt (7601904)
45.3 7.5 4.6 Data.Hashable.Generic ghashWithSalt (6569085)
26.9 .3 .3 Data.Hashable.Generic hashSum (3165747)
6.0 2.3 1.7 Data.Hashable.Generic ghashWithSalt (558817)
1.6 - - Data.Hashable.Generic hashSum (432539)
1.6 .2 .1 Data.Hashable.Class hashWithSalt (386021)
.2 .1 - Data.Hashable.Class hashWithSalt (0)
.2 .1 .1 Data.Hashable.Class defaultHashWithSalt (186852)
.1 - - Data.Hashable.Class combine (186852)
.1 - - Data.Hashable.Class hashWithSalt1 (0)
.1 - - Data.Hashable.Class liftHashWithSalt (7458)
.6 .4 .2 Data.Hashable.Class liftHashWithSalt (61434)
.4 .3 .1 Data.Hashable.Class liftHashWithSalt.step (614548)
.3 .1 .1 Data.Hashable.Class hashWithSalt (0)
.2 - - Data.Hashable.Class defaultHashWithSalt (614548)
.1 - - Data.Hashable.Class hash (0)
- - - Data.Hashable.Class combine (614548)
- - - Data.Hashable.Class liftHashWithSalt.finalise (61434)
- - - Data.Hashable.Class hashWithSalt (0)
- - - Data.Hashable.Class defaultHashWithSalt (61434)
- - - Data.Hashable.Class combine (61434)
.4 - - Data.Hashable.Generic ghashWithSalt (0)
.4 - - Data.Hashable.Generic hashSum (206676)
.1 - - Database.FluiDB.CnfQuery.Types hashWithSalt (70236)
4.0 .1 - Data.Hashable.Class hashWithSalt (128078)
.2 .1 .1 Data.Hashable.Class defaultHashWithSalt (126035)
- - - Data.Hashable.Class combine (48982)
3.5 - - Data.HashMap.Base hashWithSalt (116920)
.2 - - Database.FluiDB.Cluster.Types.Clusters hashWithSalt (0)
28.7 10.0 2.7 Data.Hashable.Class liftHashWithSalt (539054)
9.4 1.4 .4 Data.Hashable.Class defaultLiftHashWithSalt (105)
6.1 .2 .2 Data.Hashable.Class hashWithSalt (90103)
2.1 - - Data.Hashable.Generic ghashWithSalt (264200)
2.3 .8 .6 Data.Hashable.Class liftHashWithSalt2 (506010)
1.5 .2 .1 Data.Hashable.Class hashWithSalt (126670)
1.3 .1 - Data.Hashable.Generic ghashWithSalt (232657)
.1 .1 .1 Data.Hashable.Generic hashSum (27468)
.2 - - Data.Hashable.Class combine (195731)
.6 - - Data.HashMap.Base hashWithSalt (846)
8.8 5.3 2.3 Data.Hashable.Class liftHashWithSalt.step (10374784)
6.1 3.0 .6 Data.Hashable.Class hashWithSalt (55681)
5.0 2.4 2.1 Data.Hashable.Class defaultHashWithSalt (9979602)
1.5 - - Data.Hashable.Class combine (8942838)
1.5 .3 .3 Data.Hashable.Class hash (0)
.4 - - Data.Hashable.Generic ghashWithSalt (164889)
.4 - - Database.FluiDB.Cluster.Types.Clusters hashWithSalt (116428)
7.2 .1 .1 Data.Hashable.Class hashWithSalt (211986)
7.1 - - Data.Hashable.Generic ghashWithSalt (522861)
.7 .5 .1 Data.Hashable.Class liftHashWithSalt.finalise (218121)
.6 .3 .1 Data.Hashable.Class hashWithSalt (0)
.5 .3 .3 Data.Hashable.Class defaultHashWithSalt (198539)
.2 - - Data.Hashable.Class combine (98093)
...发布于 2020-03-22 03:38:38
不幸的是,我认为目前最好的方法是使用特定于项目的stack.yaml文件的每个包的ghc-options特性来显式地禁用外部依赖项的自动CAF生成。在stack.yaml文件( package.yaml或.cabal文件)中,您可以添加:
ghc-options:
hashable: -fno-prof-auto然后运行:
stack build --profile
stack exec --profile -- myProgram +RTS -p像往常一样。
由于似乎没有一种方法可以指定此标志仅适用于配置文件构建,这意味着hashable将需要重新构建,特别是在配置文件和非配置文件版本中都需要为您的项目重新构建,即使非配置文件版本应该等同于“通常”的非配置文件版本。
此外,尽管可以使用"$everything"和"$locals标志,因此以下内容可能会起作用:
ghc-options:
"$everything": -fno-prof-auto
"$locals": -fprof-auto堆栈文档不清楚如何解决这些问题,并包括多个模糊的警告,即"$everything"标志是危险的。无论如何,我都不能让它工作。
https://stackoverflow.com/questions/60765769
复制相似问题