如何强制 ghc 的分析器更深入地了解库?

2024-03-07

我正在尝试分析我的程序。所以我编译它-prof and -auto-all标志并运行-P获取详细的分析报告:

$ ghc --make -prof -auto-all Test.hs
$ ./Test +RTS -P

这是一份分析报告:

COST CENTRE              MODULE  no.    entries  %time %alloc

  main                   Main   266           1   0.0    0.0
   run                   Main   273       21845  99.3   99.7
    sz                   Main   274       21844   0.0    0.0
   size                  Main   268       21845   0.7    0.3

看起来run消耗所有时间和内存。它调用了各个库中的很多函数,我很确定大部分时间都花在其中一个函数上,但我不知道是哪个函数。 如何获得更详细的报告?我希望投入大量SCC手动注释并不是唯一的方法。

Update。现在我通过将库源复制到我的程序目录来“解决”这个问题。这允许 GHC 将它们视为程序的一部分,而不是外部库。


为了使探查器能够区分库函数,必须对它们进行成本中心注释。您可以通过两种方式执行此操作:

  1. 重新编译感兴趣的库-p -auto这样库函数就可以用 SCC 进行注释。
  2. 在代码中可能耗时的库调用周围插入 SCC 注释。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何强制 ghc 的分析器更深入地了解库? 的相关文章

随机推荐

  • 内联标记块 (@

    Content

    ) 不能嵌套。仅允许一级内联标记

    您好 我收到错误 Inline markup blocks p Content p cannot be nested Only one level of inline markup is allowed 将 Kendo UI 选项卡条和 M
  • 如何实现空对象?

    Details 我找到了一些关于空对象模式 here https softwareengineering stackexchange com questions 152094 null pointers vs null object pat
  • SQL SSIS 转换问题

    我有一个 excel 文件 我正在将其转换为 SSIS 包中的 prn 我的问题 我的其中一栏有货币 所有内容都应该有小数点 但并非所有数字都有 例如 如果没有美分 它只会读取 10425 我需要在 SSIS 中执行的操作是读取 10425
  • Laravel Eloquent 将变量传递给关系函数

    我正在使用 eloquent 来查询数据库条目及其对应关系 问题是我需要通过 date关系中的变量query如下图所示 我可以通过 date变量到第一个查询 因为它不在 with 函数内 我怎样才能用第二个来实现这个目标 Query pub
  • 是否可以存储 Team Foundation Server 自动登录的凭据?

    是否可以存储证书我用来连接到我的团队基础服务器直接在视觉工作室2010 我想避免在每次 VS 启动时插入它们 问题是托管 TFS 的计算机不在域中 并且我使用在该计算机上创建的用户的凭据进行连接 假设机器名是TOOLS 用户是Marco 我
  • GPU 的延迟是多少?

    我可以找到 CPU 核心与其缓存 主内存等之间的 CPU 周期延迟 但似乎很难找到有关现代 GPU 的类似信息 有谁知道 GPU 的延迟 特别是现代 nvidia GPU GF110 或更高版本 与其内存之间的延迟 谢谢 GPU 内存确实具
  • 如何检查 Anaconda 上的 cuda 是否安装正确

    我已经在 Anaconda 上使用以下命令安装了 Cuda conda 安装 c anaconda cudatoolkit 之前我也使用过以下命令来安装 Tensorflow GPU 版本 conda 安装 c anaconda tenso
  • INSERT INTO sqlsrv_query 语句不起作用

    使用 sqlsrv query 命令时 我可以从 MSSQL 服务器请求数据 这有效 但 当我想添加数据时 它返回错误 error array 我为此使用的代码是 tsql INSERT INTO dbo VERLOF events id
  • ObjectStateManager 不包含具有对象引用的 ObjectStateEntry

    我以为我了解 EF 特别是在极其简单的 CRUD 方面 但我可能是错的 我有一个 ObjectContext Repository 模式 在本例中是一个包含 VatRates 集合的 VatCode 实体 增值税代码 1 增值税税率 我想提
  • 多个元素的布尔运算符

    我知道有人可以做 any gt 3 1 2 3 4 5 但优雅的实现方式是什么 any and gt 3 lt 5 1 2 3 4 5 or all or lt 2 gt 4 1 2 3 4 5 etc 我相信您想检查是否有任何元素同时存在
  • Android Tabhost更改文本颜色样式

    尝试更改 tabhost 文本颜色 在这段代码中我可以更改 tabhost 背景颜色 不是文本颜色 tabHost setOnTabChangedListener new OnTabChangeListener Override publi
  • C++ - 在 Visual Studio 2010 的属性表中使用环境变量

    我想建立一个使用 OpenCV 的项目 所以基本上 我必须使用 Visual Studio 2010 中的属性管理器添加一个新的属性表 基本上 我必须将路径添加到我的include and lib文件夹以使 OpenCV 正常运行 我想将我
  • 如何删除 HTML 节点之间的空白?

    我正在尝试从 HTML 片段中删除空格 p tags p p Foo Bar p p bar bar bar p p bla p 正如你所看到的 之间总是有一个空格 p p tags 问题是空白会产生 br 将字符串保存到我的数据库时的标签
  • Spark SQL“限制”

    环境 使用 Hadoop 的 Spark 1 6 Hortonworks 数据平台 2 5 我有一个包含 100 亿条记录的表 我想获取 3 亿条记录并将它们移到临时表中 sqlContext sql select from my tabl
  • 如何聚焦位于子组件中的输入字段

    我在父组件中有一个按钮 我想通过单击该按钮来聚焦位于子组件中的输入字段 我该怎么做 您可以利用refs达到结果 class Parent extends React Component handleClick gt this refs ch
  • Laravel 身份验证,我无法检索登录的用户

    Auth check 总是返回 false 这很奇怪 因为登录函数将我重定向到 redirectTo url 因此尝试成功 但之后我无法检索用户 我正在使用 Laravel 5 2 14 和 Xampp 我不知道还要写什么 因为它应该是开箱
  • Swing 桌面开发

    我有一个关于 java 桌面 GUI 应用程序的非常普遍的问题 我的经验 在过去的几年里 我开发了许多桌面应用程序 其中一些单独使用 Swing 一些使用 Spring RCP 这很棒 但我仍然不能只押注于一个已经超过 3 年没有更新的框架
  • 设备重新启动后,AVSampleDisplayBuffer 随机挂起

    问题描述 AVSampleBufferDisplayLayer 似乎在 iOS 12 3 1 上挂起 gt iOS 12 2 也受到影响 重启 看起来 5 分钟后一切又恢复正常了 该问题在 iOS 11 上无法重现 在我们的生产代码中 我们
  • 在 /usr/share/phpMyAdmin/libraries/Error.class.php 中找不到 phpMyAdmin 类“PMA_Message”

    我刚刚收到此错误 过去 2 年 phpMyAdmin 中没有错误 PHP 致命错误 在第 24 行 usr share phpMyAdmin libraries Error class php 中找不到类 PMA Message 我尝试搜索
  • 如何强制 ghc 的分析器更深入地了解库?

    我正在尝试分析我的程序 所以我编译它 prof and auto all标志并运行 P获取详细的分析报告 ghc make prof auto all Test hs Test RTS P 这是一份分析报告 COST CENTRE MODU