とすれば:
int onlyLastByteContainsValue = 35;
次のうちどれがより高速で、その理由は?
byte valueInByte = BitConverter.GetBytes(onlyLastByteContainsValue)[3];
または
byte valueInByte = (byte)onlyLastByteContainsValue;
フォローアップの質問:上記の 2 つの間に他に違いはありますか?
とすれば:
int onlyLastByteContainsValue = 35;
次のうちどれがより高速で、その理由は?
byte valueInByte = BitConverter.GetBytes(onlyLastByteContainsValue)[3];
または
byte valueInByte = (byte)onlyLastByteContainsValue;
フォローアップの質問:上記の 2 つの間に他に違いはありますか?
当然のことながら、私のプロファイリングから、最適化をオフにすると最大 5 倍 (さらに最適化をオンにするとさらに) キャストが高速になります。
もちろん、さまざまなことが起こっています。
このステートメントBitConverter
は、サイズが の配列を割り当て、sizeof(int)
int 値のすべてのバイトを格納してから、配列にインデックスを付けて 1 バイトだけを取得します。資源の無駄遣いであることは言うまでもありません。
byte
キャストは、指定された値が( が指定されていない限り)の範囲内にあることを確認し、値のunchecked
最下位バイトを にキャストしますbyte
。