我最初是在寻找一种方式转换字节浮动,发现答案指示最快的是在创建一个查找表。

因此,我想知道是否有人知道,我可以使用预先存在的查找表。

有帮助吗?

解决方案

通常你会使用的代码和一个for循环或任何适合你的目的的几行初始化查找表。如果你在一个有限数量的可能的输入做大量的转换这是唯一有用的。

下面的例子是仅用于说明构建和使用查找表的基本技术。除非有更多的数学参与,就实际上是,如果你实现了这个(见下文)性能命中。

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;

在这种情况下,查找表应比使用直接计算更快。更复杂的数学题(三角函数等),更大的性能增益。另一种常见的用法是伽马校正的图像(指数函数)。

其他提示

查找表?我们不需要任何讨厌的查找表!

float floatVal = (float)byteVal;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top