-1

とすれば:

int onlyLastByteContainsValue = 35;

次のうちどれがより高速で、その理由は?

byte valueInByte = BitConverter.GetBytes(onlyLastByteContainsValue)[3];

または

byte valueInByte = (byte)onlyLastByteContainsValue;

フォローアップの質問:上記の 2 つの間に他に違いはありますか?

4

1 に答える 1

2

当然のことながら、私のプロファイリングから、最適化をオフにすると最大 5 倍 (さらに最適化をオンにするとさらに) キャストが高速になります。

もちろん、さまざまなことが起こっています。

  • このステートメントBitConverterは、サイズが の配列を割り当て、sizeof(int)int 値のすべてのバイトを格納してから、配列にインデックスを付けて 1 バイトだけを取得します。資源の無駄遣いであることは言うまでもありません。

  • byteキャストは、指定された値が( が指定されていない限り)の範囲内にあることを確認し、値のunchecked最下位バイトを にキャストしますbyte

于 2013-07-14T09:38:40.827 に答える