ここで、iは、ルックアップテーブルをfloatへのバイトを見つけることができますか?

StackOverflow https://stackoverflow.com/questions/1089235

  •  23-08-2019
  •  | 
  •  

質問

私が最初に変換バイトが浮くする方法を探して、そして最速だった示している答えは、ルックアップテーブルを作成することですが判明した。

誰もが、私が使用することができ、既存のルックアップテーブルを知っている場合は、

だから私は思っていた。

役に立ちましたか?

解決

通常は、あなたの目的に合ったものは何でもループまたはのためのコードであり、aの数行を使用してルックアップテーブルを初期化します。あなたが可能な入力の有限数に変換の多数をやっている場合にのみ便利です。

次の例では、唯一のルックアップテーブルを構築し、使用しての基本的な技術を実証することです。より多くの数学関係がない限り、実際にはこれが(下記参照)実施された場合、パフォーマンスがヒットがあるだろう。

float[] lookupTable = new float[256];
for (int i = 0; i < 256; i++)
{
    lookupTable[i] = (float)i;
}

float convertedValue = lookupTable[byteValue];

コードは、C#で、私は、配列の宣言は少し違うだろう++ C対物C.経験がないが、あなたのアイデアを得る。

ルックアップテーブルを使用するには?

いかなる計算は、浮遊するバイトからだけ変換を伴っていないので、

上記の例では、パフォーマンス上の利得は、存在しません。 (あなたのケースのような)浮動小数点除算が含まれている場合を考えてみます:

    lookupTable[i] = i / 255f;

この場合には、ルックアップテーブルは直接計算を使用してより速くなければなりません。より複雑な数学(三角法など)、大きなパフォーマンスゲイン。別の一般的な使用は、画像(指数関数)をガンマ補正である。

他のヒント

ルックアップテーブル?私たちは、ルックアップテーブルを何stinkinは必要ありません!

float floatVal = (float)byteVal;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top