[プログラム板] C#, C♯, C#相談室 Part47
at TECH
208:170
08/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を食うのは相変わらず解せないので…。
また何かわかったら報告します。ありがとうございました。
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4939日前に更新/181 KB
担当:undef