函数式编程方法:如何避免在Java中复制对象的开销?
函数式编程方法:如何避免在Java中复制对象的开销?
我是一个函数式编程的新手用户。我可能对函数式编程 (FP) 有误解,但我认为纯 FP 语言不允许可变对象。
我有两个问题。一个是比较理论的,另一个是关于具体的 Java 代码的。
问题1纯 FP 语言如何避免复制对象的性能开销?
var x = getMassiveObject() var y = f(x)
我认为 x
必须在 f
中复制,因为 x
是不可变的,没有人能触及 x
的内存空间。如果 x
很大,复制的过程似乎需要很长时间。
但我没有看到任何有关这一点的讨论,所以我认为 FP 语言中没有这种开销。
因此,我的第一个问题是:纯 FP 语言如何避免复制不可变的大对象的性能开销?
问题2我想用 FP 的方式构建 Java 程序以避免副效应。 我的第二个问题是:如何重写下面的代码以消除复制的开销?
public void main(){ MassiveClass m = new MassiveClass(); MassiveClass n = convert(m); } public MassiveClass convert(MassiveClass arg){ MassiveClass arg2 = deepCopy(arg); // copy arg because arg should not be modified arg2.var = 100; return arg2 }
admin 更改状态以发布 2023年5月21日