确定性函数的编译器优化

3

我正在阅读关于确定性执行的内容,这是指对于相同的输入,你会得到相同的输出。我在想是否有任何编译器编写者曾考虑过在运行时优化确定性函数。

例如,以阶乘函数为例。如果在运行时检测到它不断被调用具有相同的输入值,编译器可以缓存输出值,而不是执行阶乘函数,直接使用该输出值。看起来像一个不错的研究课题。是否有关于此主题的论文或研究?


你好像把这个网站当成了谷歌。 - user2100815
4个回答

4

这通常被称为记忆化,是函数式语言中相当常见的优化技术。


1

这是可以做到的,但据我所知,编译器通常不会这样做。问题在于用户可以定义任意数量的类型和任何方式的相等性,并且使用堆分配等内容非常困难来证明这种情况。基本上,只有当您的函数涉及直接数值计算时才能完成,这是很少见的,因此通常价值不高。


1

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接