- 208 名前:170 mailto:sage [2008/07/13(日) 08:05:41 ]
- 170ですが、遅くなって申し訳ありません。まだ解決したとはいえないのですが、>>194っぽい気がしています。
なお、最初に書いた文章が改行大杉と言われたので改行減らしています。読みにくいかもしれません。すみません。 とりあえず public double Max<T>(T[] src, int offset, int length) { double ret; if(src is float[]) { float[] srcFloat = src as float[]; int end = offset + length; for(int i = offset ; i < end; i++) { double val = (double)srcFloat[i] if(val > ret) ret = val; } } else if(src is double[]) { (略。明示的キャストをしないこと以外はfloatと同じ) } return ret; } というようにfloat[]、double[]の型に変換してからキャストするようにするとLOHを食う現象は見られなくなりました。 ただ、今でもキツネにつままれたような気分は抜けないので、もう少し元のコードだと何をやっているか調べてみようと思っています。 >>200で指摘があるように、キャストでヒープを消費するのはわかるんですが、Gen0やGen1ならともかくLOHを食うのは相変わらず解せないので…。 また何かわかったら報告します。ありがとうございました。
|

|