- 882 名前:876 mailto:sage [2010/05/21(金) 09:43:36 ]
- >>880
Procject Eulerの問題が実際にStreamで事足りるかどうかは 実際にその問題を解いてないからわからないんだけど、原理的には Streamを使うと大量のゴミが発生する。というのは、Streamって 要は hd: A tl: => Stream[A] みたいな感じのtailの部分が遅延評価されるリストになってるわけ だけど、ここからn番目の要素を取ってこようとすると、このhdとtl を持ったセルn個分のゴミが発生する。どっかの変数がうっかり Streamの先頭を指していない限りガベージコレクタによって回収される はずなので、メモリ消費量のオーダが即座にO(n)になるわけじゃないけど、 とにかく大量のゴミが発生する事は間違いない。もちろん、tl部分が 評価されなければそのセルは生成されないわけだけど、今回の話だと ループをn回ぶん回すというのが前提だったようなので。 一方、Iteratorなら(適切にspecializedアノテーションが付いてる 事を前提にすれば)、ゴミはほとんど発生しない。ということが 言いたかった。
|

|