小编XOX*_*OXO的帖子

函数式编程是否会降低Von Neumann的瓶颈?

我相信(从一些阅读中)读取/写入总线上从CPU缓存到主存储器的数据对计算任务(需要通过总线移动数据)的完成速度产生了相当大的限制--Von Neumann瓶颈.

到目前为止,我已经遇到过一些文章,其中提到函数式编程比其他范式(例如命令式方法)更具性能.OO(在某些计算模型中).

有人可以解释纯功能编程可以减少这个瓶颈的一些方法吗?即.发现(一般)以下任何一点是真的吗?

  1. 使用不可变数据结构意味着通常较少的数据在该总线上移动 - 更少的写入?

  2. 使用不可变数据结构意味着数据可能更容易在CPU缓存中闲置 - 因为对现有状态的更少更少意味着缓存中的对象刷新更少?

  3. 是否有可能使用不可变的数据结构意味着,我们可能会经常甚至从来没有读取数据从主内存回来,因为我们在计算过程中创建对象并使其在本地缓存中,然后在相同的时间片创建一个新的不可变对象关闭它(如果需要更新),那么我们永远不会使用原始对象,即.我们正在使用位于本地缓存中的对象进行更多工作.

performance haskell functional-programming scala

7
推荐指数
1
解决办法
439
查看次数

在Scala中需要@tailrec注释?

我理解递归函数的问题和堆栈溢出问题的风险.

但是,如果函数能够针对尾递归进行优化,那么为什么不会自动应用此优化,即.为什么我需要标记一个可以优化的功能@tailrec

scala

4
推荐指数
1
解决办法
3349
查看次数