"); //-->
VM600 XMV16 使用中央处理器和记忆语言
VM600 XMV16 使用中央处理器和记忆语言
函数式编程语言在使用中央处理器和记忆比命令式语言,如C和帕。[82]这与这样一个事实有关,即一些可变的数据结构,如数组,在现有的硬件上有一个非常简单的实现。平面阵列可以通过深度流水线CPU非常有效地访问,通过高速缓存有效地预取(没有复杂的指针追踪),或者用SIMD的指示处理。创建同样高效的通用不可变副本也不容易。对于纯函数式语言,最糟糕的情况是使用的内存单元数量呈对数增长,因为可变内存可以用具有对数访问时间的纯函数式数据结构来表示(比如平衡树)。[83]然而,这样的减速并不普遍。对于执行密集数值计算的程序,函数式语言如OCaml和干净的只比C语言稍微慢一点,根据计算机语言基准游戏。[84]对于处理大型矩阵和多维的数据库,排列函数式语言(例如J和K)的设计采用了速度优化。
数据的不变性在许多情况下可以提高执行效率,因为它允许编译器做出在命令式语言中不安全的假设,从而增加了在线扩展。[85]
懒惰评估也可能加速程序,甚至是渐进地加速,而它可能以一个常数因子减慢程序(然而,它可能引入内存泄漏如果使用不当)。劳伦斯伯里1993[65]讨论与懒惰计算导致的内存泄漏相关的理论问题以及其他人2008[86]给出一些分析和修复它们的实用建议。然而,在具有深流水线和多级高速缓存(其中高速缓存未命中可能花费数百个周期)的现代处理器上,广泛使用解引用的代码和数据的最一般的惰性评估实现表现不佳[需要引用]。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。