gpt4 book ai didi

haskell - 内部模块的跨模块内联

转载 作者:行者123 更新时间:2023-12-03 16:17:24 24 4
gpt4 key购买 nike

我有一个带有很多内部模块的 cabal 包(other-modules 字段)。我相信我会从内联其中的大部分函数中受益。

我是否必须通过所有插入 pragma 或 GHC 和 Cabal 足够聪明来自己进行内联?如果是,那么这种内联将如何执行?如果否则我必须通过插入一个编译指示,我应该更喜欢哪个:INLINEINLINABLE (或者甚至可能是合成的 inline function )-出于什么原因?

最佳答案

GHC 在高水平优化方面会做得很好。
如果在检查 Core 和分析之后,您确定某些函数没有被内联,那么您可以使用 INLINABLE 或 INLINE 来增加发生内联的可能性。
Recall

The major effect of an INLINE pragma is to declare a function's “cost” to be very low. The normal unfolding machinery will then be very keen to inline it.

While INLINE says "please inline me", the INLINABLE says "feel free to inline me; use your discretion"


INLINABLE 通常是更好的选择,因为您不知道所有调用站点的外观。
但是,只有在您对性能进行分析并且对性能不满意时才有意义,并且可以证明通过内联提高了性能。

关于haskell - 内部模块的跨模块内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24363124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com