「&as」によるパフォーマンスの落とし穴;および Null 許容型
「&as;」を使用する場合、簡潔な構文によるパフォーマンスの向上がよく頭に浮かびます。オペレーター。ただし、最近のベンチマークで実証されているように、この演算子は null 許容型に対して意図した最適化を常に実現できるわけではありません。
ベンチマークでは、「&as;」と「&is;」の間で予期しないパフォーマンスの差異が明らかになりました。次にキャスト、さらには LINQ ソリューションが続きます。多くの人が驚いたことに、レガシー「&is;」はこのアプローチは「&as;」よりもパフォーマンスが高く、20 倍の差があります。これにより、「&as;」によってなぜこのような速度低下が発生するのかという疑問が生じます。
根本的な理由は、JIT コンパイラーによって生成されたコードにあります。 「&is;」の場合は、簡単な型チェックとボックス化解除だけで十分です。一方、「&as;」は、ボックス化された整数と Nullable
LINQ ソリューションは反復子のために遅れることが予想されますが、"&as;" に比べて遅くなります。不可解だ。考えられる原因は、ngen.exe の最適化である可能性があります。
結論として、「&as;」は構文上の利便性を提供しますが、パフォーマンスが重視されるシナリオでは、null 許容型とのパフォーマンスのトレードオフを慎重に考慮する必要があります。
以上が`&as;` は Null 許容型を使用すると常にパフォーマンスの向上をもたらしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。