题
我最初是在寻找一种方式转换字节浮动,发现答案指示最快的是在创建一个查找表。
因此,我想知道是否有人知道,我可以使用预先存在的查找表。
解决方案
通常你会使用的代码和一个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;
不隶属于 StackOverflow