You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

程序带Profiling运行正常,无Profiling时运行缓慢,求排查方案

问题:无Profiling编译的Haskell程序性能异常缓慢,Profiling模式反而更快

执行耗时现象

  • 使用stack build编译后运行耗时约9秒
  • 使用stack build --profile编译后运行耗时约5秒

我预期无Profiling模式的执行耗时应低于1秒,因此Profiling模式下的耗时是合理的,无Profiling模式的耗时异常缓慢。

更多细节

  • 程序功能:读取类关系代数DSL,应用一系列基于规则的转换后输出SQL翻译。解析使用megaparsec,I/O基于String且数据量约150KB,可排除I/O为性能瓶颈。转换涉及对ADT的递归重写规则,部分场景使用ugly-memo加速递归重写。
  • 开发环境:stack 2.9.1搭配LTS 18.28、GHC 8.10.7(已升级至LTS 20.11、GHC 9.2.5,问题仍存在)
  • Cabal文件配置:
ghc-options:        -O2 -Wall -fno-warn-unused-do-bind -fno-warn-missing-signatures -fno-warn-name-shadowing -fno-warn-orphans
ghc-prof-options:   -O2 -fprof-auto "-with-rtsopts=-p -V0.0001 -hc -s"
  • 上述配置未做改动,但此前从未出现该问题。
  • 已尝试添加-fno-state-hack编译,无改善。
  • 不同优化等级测试:-O1编译后耗时与-O2相近,-O0编译后耗时显著增加(符合预期)。
  • Profiling信息未发现问题根源,仅无Profiling模式下出现性能异常。

我的问题

由于代码库较大,无法确定问题所在的具体代码片段,因此我的问题并非“问题在哪”,而是:在Profiling工具无效的情况下,我该如何进一步定位问题根源?


内容的提问来源于stack exchange,提问作者swingbit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 11:55:47