首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >堆栈分析跳过依赖项中的成本中心

堆栈分析跳过依赖项中的成本中心
EN

Stack Overflow用户
提问于 2020-03-20 06:08:40
回答 1查看 57关注 0票数 0

我正在尝试分析我的程序,它使用了hashables库和其他库。我不想分析我的代码的依赖关系,我只想分析我的代码(也许还有依赖关系的入口点)。我正在使用stack build --profilestack build --executable-profile构建,但在我的配置文件中总是收到这样的噪音(以下是profiterole输出)。我如何才能跳过所有这些,并且只从我的包中删除配置文件代码?

代码语言:javascript
复制
...


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)

...
EN

回答 1

Stack Overflow用户

发布于 2020-03-22 03:38:38

不幸的是,我认为目前最好的方法是使用特定于项目的stack.yaml文件的每个包的ghc-options特性来显式地禁用外部依赖项的自动CAF生成。在stack.yaml文件( package.yaml.cabal文件)中,您可以添加:

代码语言:javascript
复制
ghc-options:
  hashable: -fno-prof-auto

然后运行:

代码语言:javascript
复制
stack build --profile
stack exec --profile -- myProgram +RTS -p

像往常一样。

由于似乎没有一种方法可以指定此标志仅适用于配置文件构建,这意味着hashable将需要重新构建,特别是在配置文件和非配置文件版本中都需要为您的项目重新构建,即使非配置文件版本应该等同于“通常”的非配置文件版本。

此外,尽管可以使用"$everything""$locals标志,因此以下内容可能会起作用:

代码语言:javascript
复制
ghc-options:
  "$everything": -fno-prof-auto
  "$locals": -fprof-auto

堆栈文档不清楚如何解决这些问题,并包括多个模糊的警告,即"$everything"标志是危险的。无论如何,我都不能让它工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60765769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档