フォロー

原因分かった!><;
checkedブロックの中で掛け算するととんでもなく重い><;

値の範囲をint32にしちゃって、内部はint64にすれば、自前の範囲チェックのみで済んでCPU側のラップアラウンドが発生しなくなるからuncheckで計算できて軽くなる・・・?><

なんと、オレンジの元の実装でも、int32でcheckedでオーバーフローを空キャッチするコードよりはちょっと高速らしい・・・><;
オーバーフロー時の処理が重いのか><;

"値の範囲をint32にしちゃって、内部はint64にすれば..."にしたら、オレンジ版の方が大幅に速くなった><;

System.Int32 ver. Elapsed Time: 1790 ms
Subrange ver. Elapsed Time: 217 ms

ログインして会話に参加
:realtek:

思考の /dev/null