gpt4 book ai didi

performance - 函数式编程是否允许更好的运行时编译器优化?

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

注意:已经将其设为 Wiki。我不在乎这个问题被标记为什么,只要有一个很好的讨论。

我听说由于在纯函数式程序中,没有副作用并且值不会发生变化,因此编译器可以更轻松地进行更多运行时优化。这在多大程度上是真的?

如果这是真的,我的下一个问题是我们用它来换取自由的损失是什么?我的意思是,在像 C++/C 这样的语言中,开发人员完全可以控制并且可以调整很多东西。如果我们把这项工作交给编译器,我们就会失去这个机会。这样做的好处是,即使是非专业程序员也能写出好的代码。此外,如今机器架构中有如此多的缓存层,即使是专家也可能无法真正做任何有值(value)的事情。因此,将这项工作委托(delegate)给比程序员更了解底层架构的编译器是一个好主意。

你有什么建议?

最佳答案

你见过this "good math, bad math" blog post ?

我用 C、汇编和 OCaml 编程。我有时会查看 C 编译器生成的程序集。它效率极低。我经常注意到一个全局变量被一次又一次地重新加载,当它很清楚(对于知道程序逻辑的人来说)它在函数执行期间没有改变,但是因为函数操纵指针,编译器不能假设变量没有被触及。当您注意到它时解决此问题的一种简单方法是在函数的开头将全局的内容复制到本地,这样您可以保持 C 的可移植性但获得类似汇编的性能......

但是你不应该这样做,事实上,对于高级语言,你也不需要这样做,因为指针、强制转换和其他低级结构让你在使用时更接近硬件想要但实际上妨碍了自动优化。

关于performance - 函数式编程是否允许更好的运行时编译器优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1883618/

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