假设我有一个boolean
函数isCorrect(Set<Integer>)
。
该函数的参数由另一个函数buildSet()
计算。
在时间和空间效率上哪个更好?
Set<Integer> set = buildSet();
if(isCorrect(set))
doSomethingWith(set);
要么
if(isCorrect(buildSet()))
doSomethingWith(buildSet());
最佳答案
第一种方法更好,但我认为这不是意见问题。在获得相同结果后,不要浪费时间调用同一函数两次。当然,我假设buildSet()
没有任何必要的副作用。
在时间和空间效率上哪个更好?
就时间而言,您要在第一个代码段中构建一次该集合,而在第二个代码段中构建两次,因此大概第二个将花费更长的时间。在空间方面,可能不会有任何区别。但是,您似乎在第二个片段中实例化了两个对象,而在第一个片段中实例化了一个对象(再次,我不确定这一点,因为我不知道buildSet()
是如何实现的)。如果是这种情况,并且您保留了这两个对象,那么第二个代码段也将使用两倍的空间。