函数式编程会占用更多内存吗?

Par*_*ara 23 memory functional-programming

警告!可能是个非常愚蠢的问题

函数式编程比程序式编程占用更多内存吗?我的意思是......如果你的对象(数据结构无关紧要)都是可以改变的.难道你不会在给定的时间内在内存中有更多的对象.

这不会占用更多的记忆吗?

Lau*_*ves 6

这取决于你在做什么.使用函数式编程,您不必创建防御性副本,因此对于某些问题,最终可能会使用更少的内存.

许多函数式编程语言也对懒惰有很好的支持,这可以进一步减少内存使用,因为在实际使用它们之前不会创建对象.然而,这可以说是仅与函数式编程相关的东西,而不是直接原因.

  • 在懒惰的情况下,在实际使用它们之前不会创建对象,但是在您决定创建它们之前,将所有必要的参数保留在内存中.在很多情况下,这会对你不利. (5认同)
  • @Pascal这是一个好点.哪个更好取决于哪个更便宜:计算的输入或输出. (2认同)

Pas*_*uoq 6

功能语言鼓励但可以用命令式语言实现的持久性价值观使分享变得简单.

虽然普遍接受的想法是使用垃圾收集器,但在任何给定时间都存在一些浪费的空间(已经无法访问但尚未收集的块),在这种情况下,如果没有垃圾收集器,您最终会经常复制值是不可变的,可以共享,只是因为在使用后决定谁负责释放内存太麻烦了.

这份经验报告中,这些想法有所扩展,这些报告并不是一项客观研究,而只是一项轶事证据.