{cdate:2010-08-15}

{what:groovy,closure}

  1. メモリ使用量を抑えたいならば Groovy の Closure を再帰関数内では使わない方がいいことを発見した件

繰り返し調べる問題を groovy で解いていて気づいたのだが、
Closureを使わないで普通のJavaスタイルで書けば
OutOfMemoryを回避しやすい...というか Closureで書くよりはメモリ消費量が少ない
ということ。

あーもうこれわかっている人にとっては当たり前の話なんだろうけど。
いままでメモリを消費する処理を書いたことがなかったので
深く考えたことなかった。

    1. たとえば

ついつい
以下のように Closure で書いてしまうが...


def recur( javax.swing.tree.DefaultMutableTreeNode node ){
	doSomething( node )

	node.children().each{
		recur( it )
	}
}

普通にJavaスタイルでrecurを書いておけば、
よりメモリ消費量がすくない(たぶん)。


def recur( javax.swing.tree.DefaultMutableTreeNode node ){
	doSomething( node )

	for(int i=0; i<node.getChildCount(); i++){
		recur( node.getChildAt(i) )
	}
}