如何强制 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 的分析器更深入地了解库? 的相关文章

  • 在另一个字符串中查找子字符串的索引 Haskell

    我要创建一个带有两个参数 字符串 的函数 该函数应查看第一个参数是否是第二个参数的子字符串 如果是这种情况 它将返回每个出现的元组 其中包含子字符串的起始索引和子字符串的结尾索引 例如 f String gt String gt Int I
  • 使用带有两个列表而不是一个列表的地图。可以筑巢吗?

    我需要多次运行一个带有两个参数的函数 我有两个包含这些参数的列表 我希望能够使用map或类似的东西用相应的参数调用函数 我要调用的函数具有以下类型 runParseTest String gt String gt IO 列表的创建方式如下
  • Haskell 处理负参数

    尝试对两个值求和 其中只有一个为负值 例如 1 and 2 soma Float gt Float gt Float soma x1 x2 x1 x2 结果出现错误 为什么
  • Haskell 点运算符

    我尝试在 Haskell 中开发一个简单的平均函数 这似乎有效 lst 1 3 x fromIntegral sum lst y fromIntegral length lst z x y 但是为什么下面的版本不行呢 lst 1 3 x f
  • 堆内存与对象内存

    根据一篇关于Java内存和特性的论文 内存分数分为两种类型 堆内存 即应用程序在运行时消耗的内存 对象内存 即程序中使用的各种对象分配的内存 例如整数和字符串等 他们的意思是stack当他们说时的记忆object记忆 或者它们是什么意思 很
  • 如何让 do 块提前返回?

    我正在尝试使用 Haskell 抓取网页并将结果编译到一个对象中 如果出于某种原因 我无法从页面获取所有项目 我想停止尝试处理页面并提前返回 例如 scrapePage String gt IO scrapePage url do doc
  • 管道 - 将多个来源/生产者合并为一个

    我正在使用读取文件sourceFile 但我还需要在处理操作中引入随机性 我认为最好的方法是拥有一个这样的制片人 Producer m StdGen ByteString 其中 StdGen 用于生成随机数 我打算让生产者执行 source
  • Haskell 中多核编程的现状如何?

    Haskell 中多核编程的现状如何 现在有哪些项目 工具和库可用 有哪些经验报道 2009年至2012年期间 发生了以下事件 2012 从 2012 年开始 并行 Haskell 状态更新开始出现在并行 Haskell 摘要 http w
  • Python 比编译的 Haskell 更快?

    我有一个用 Python 和 Haskell 编写的简单脚本 它读取包含 1 000 000 个换行符分隔的整数的文件 将该文件解析为整数列表 对其进行快速排序 然后将其写入已排序的不同文件中 该文件与未排序的文件具有相同的格式 简单的 这
  • 并行 Haskell - GHC GC 火花

    我有一个正在尝试并行化的程序 带有可运行代码的完整粘贴here http lpaste net 101528 我进行了分析 发现大部分时间都花在findNearest这本质上是一个简单的foldr超过一个大Data Map findNear
  • 优化 Haskell 内循环

    仍在 Haskell 中进行 SHA1 实现 我现在已经有了一个有效的实现 这是内部循环 iterateBlock Int gt Word32 gt Word32 gt Word32 gt Word32 gt Word32 gt Word3
  • 与 Functor 不同,Monad 可以改变形状?

    我一直很喜欢以下关于单子相对于函子的力量的直观解释 单子可以改变形状 函子不能 例如 length fmap f 1 2 3 总是等于3 然而 对于单子来说 length 1 2 3 gt gt g往往不等于3 例如 如果g定义为 g Nu
  • Haskell Cabal:“包间接依赖于同一包的多个版本”

    清除我的所有后cabal installed 包 我运行了以下会话 cabal update Downloading the latest package list from hackage haskell org james bast c
  • 无法在 Visual Studio 2012 中启动并发可视化工具。出现错误“无法启动 ETW 集合”

    当我尝试使用 Concurrency Visualzer 分析 WPF 应用程序时 尝试启动并附加到进程 弹出以下错误 无法启动 ETW 收集 ETW 显然意味着 Windows 事件跟踪 但我不明白为什么 VS 无法在分析会话期间启动它
  • 在 Haskell 中调试时打印时间戳

    我仍在学习 Haskell 并调试一些函数 并且通常有一个时间戳函数来了解某些操作何时开始和停止 doSomeAction String gt IO doSomeAction arg1 do putStrLn lt lt makeTime
  • CoreAnimation 性能分析 - CAReplicatorLayer 与 CAShapeLayer

    我正在制作一个依赖 CoreAnimation 的应用程序 它有一个 CAReplicatorLayer 和一个 CAShapeLayer 作为子层 当进行 12 次复制 然后对路径进行动画处理 在 touchMoved 上更改它 时 一旦
  • Haskell:确定函数数量的函数?

    可以写一个函数吗arity a gt Integer确定任意函数的数量 使得 gt arity map 2 gt arity foldr 3 gt arity id 1 gt arity hello 0 是的 这可以非常非常容易地完成 ar
  • seq在haskell中代表什么

    我是 Haskell 的新手 刚刚进入惰性世界编程 我读到seq函数非常特殊 因为它强制使用严格的评估 以便在某些情况下更加有效 但我就是找不到什么seq代表字面意思 也许严格评估Q 它应该提醒您 顺序 或 顺序 因为它允许程序员指定其参数
  • GHC 8.4 系列的插件名称查找行为发生变化

    更新 原来这是一个 GHC 错误 现已修复 预计在 8 6 4 版本中发布 https ghc haskell org trac ghc ticket 16104 comment 8 https ghc haskell org trac g
  • monadicIO 的工作原理

    我有以下代码 fastShuffle a gt IO a fastShuffle a

随机推荐

  • 内联标记块 (@

    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