我有一个“不必要”多态的代码库,因为几乎每个函数在某种程度上都是多态的(为什么不是,什么时候可以?),但是最终程序只使用少数具体类型的函数。我已经开始花费一些时间投入SPECIALIZE
和INLINABLE
pragma来试图降低所有这些多态性的性能成本,但是随着我的代码的大小,它非常受欢迎。对于每个函数,有没有办法分析在运行时花费多少时间“完成多态性需要的东西”?
(注意:我已经问过这个问题而不知道这样的事情在技术上是否可能,或者“多态性需要的东西”是否足够明确)。
答案 0 :(得分:8)
确定成本的过程是:
通常,您会发现一些操作太慢;通过分析进行编译并精确确定哪些组件成本很高,然后检查代码以对其进行优化(例如,通过专门化数据结构或功能,更改算法或进行其他更改)。
对于性能关键的工作,您将去检查Core以查看编译器是否可以提供微调。