Особенности производительности Groovy-коллекций в отношении пространства / времени

Какова производительность методов сбора Groovys (в отношении пространства (!) И времени) по сравнению с простыми циклами for for Java?

Например, для этих случаев использования:

сумма () против цикла for с переменнойкаждый () против цикла с переменнойinject () против цикла for с переменнойcollect () против цикла for с временной коллекциейfindAll () против цикла for с временной коллекциейfind () против цикла for с переменной

Итак, учитывая эти результаты, целесообразно ли использовать циклы for поверх методов Groovy-collection в критических средах (например, Grails-WebApp)? Есть ли ресурсы, касающиеся производительности Groovy / Grails (оптимизация)?

Используя этот тест GBench, я получил следующие результаты для процессорного времени:

                 user  system      cpu     real

forLoop       2578777      67  2578844  2629592
forEachLoop   2027941      47  2027988  2054320
groovySum     3946137      91  3946228  3958705
groovyEach    4703000       0  4703000  4703000
groovyInject  4280792     108  4280900  4352287



import groovyx.gbench.BenchmarkBuilder

def testSize = 10000
def testSet = (0..testSize) as Set


def bm = new BenchmarkBuilder().run {

'forLoop' {
    def n = 0
    for(int i = 0; i<testSize; i++) {
        n += i
    }
    return n
}

'forEachLoop' {
    def n = 0
    for(int i in testSet) {
        n += i
    }
    return n
}

'groovySum' {
    def n = testSet.sum()
    return n
}

'groovyEach' {
    def n = 0
    testSet.each { n + it }
    return n
}

'groovyInject' {
    def n = testSet.inject(0) { el, sum -> sum + el }
    return n
}
}
bm.prettyPrint()

Ответы на вопрос(1)

Ваш ответ на вопрос