从内存的角度来看,使用.each {}迭代Groovy中的集合而不是for循环是否有任何优点或缺点?

时间:2014-07-22 09:12:30

标签: groovy

简单的说明性示例:

在集合上使用.each {}:

def adults = Person.findAllByAgeGreaterThan(18)

adults.each{adult ->
    //perform action on adult
}

使用 for 迭代集合:

def adults = Person.findAllByAgeGreaterThan(18)

for(adult in adults){
    //perform action on adult
}

1 个答案:

答案 0 :(得分:3)

循环稍好一些:例如,它不必创建Closure实例。详细信息取决于您的Groovy版本,编译器和JIT优化以及更多内容。如果您需要确定,请通过内存分析器运行代码。

但是由于我们在这里只谈了几十个字节,你不应该感到这种冲动"我需要修复这个代码"。这可能只是浪费时间(即修复它比放弃它更贵)。

2014年,the first goal for code is readability

只有当性能非常糟糕并且测量时,分析器为什么它很糟糕,是时候修复代码了(即牺牲时间) ,可维护性和可读性以获得更好的性能。)