・・・・・・><
ちょっといじってみたけど、初期化とかじゃなく、マジでただの掛け算にこの時間のほぼすべてがかかってるっぽい><;
・・・実はnintのほうは、最適化で中身が空になってたりするのかな?><
原因分かった!><;checkedブロックの中で掛け算するととんでもなく重い><;
値の範囲をint32にしちゃって、内部はint64にすれば、自前の範囲チェックのみで済んでCPU側のラップアラウンドが発生しなくなるからuncheckで計算できて軽くなる・・・?><
なんと、オレンジの元の実装でも、int32でcheckedでオーバーフローを空キャッチするコードよりはちょっと高速らしい・・・><;オーバーフロー時の処理が重いのか><;
"値の範囲をint32にしちゃって、内部はint64にすれば..."にしたら、オレンジ版の方が大幅に速くなった><;
System.Int32 ver. Elapsed Time: 1790 msSubrange ver. Elapsed Time: 217 ms
思考の /dev/null
ちょっといじってみたけど、初期化とかじゃなく、マジでただの掛け算にこの時間のほぼすべてがかかってるっぽい><;