私たちのアプリケーションでは、非常に大きなバイト配列があり、これらのバイトを異なる型に変換する必要があります。現在、BitConverter.ToXXXX()
この目的で使用しています。私たちのヘビーヒッターは、ToInt16
とToUInt64
.
の場合UInt64
、問題は、データ ストリームが実際には大きな整数を表す 6 バイトのデータを持っていることです。6 バイトのデータを に変換するネイティブ関数がないため、次のUInt64
ようにします。
UInt64 value = BitConverter.ToUInt64() & 0x0000ffffffffffff;
の使用ToInt16
はより簡単で、ビット操作を行う必要はありません。
私たちはこれら 2 つの操作を非常に多く行っているため、SO コミュニティにこれらの変換を行うためのより高速な方法があるかどうかを尋ねたいと思いました。現在、全 CPU サイクルの約 20% がこれら 2 つの関数によって消費されています。