onde eu posso encontrar um byte para flutuar tabela de pesquisa?
Pergunta
Inicialmente, eu estava procurando um byte forma convertido ao float, e encontrou respostas que indicam o mais rápido foi é criar uma tabela de pesquisa.
Então, eu queria saber se alguém sabe de uma tabela de pesquisa pré-existente que eu posso usar.
Solução
Normalmente, que se inicializar a tabela de pesquisa usando algumas linhas de código e um loop for ou o que ternos seu propósito. É apenas útil se você está fazendo um grande número de conversões em um número finito de entradas possíveis.
O exemplo a seguir é apenas para demonstrar que a técnica básica de construção e utilização de uma tabela de pesquisa. A menos que haja mais matemática envolvida, não seria realmente um impacto no desempenho se você implementou esta (veja abaixo).
float[] lookupTable = new float[256];
for (int i = 0; i < 256; i++)
{
lookupTable[i] = (float)i;
}
float convertedValue = lookupTable[byteValue];
O código é C #, eu não tenho nenhuma experiência com objetivo C. Em C ++ a declaração de matriz seria um pouco diferente, mas você começa a idéia.
Quando usar uma tabela de pesquisa?
No exemplo acima, não há nenhum ganho de desempenho, porque nenhum cálculo está envolvido, apenas uma conversão de byte para flutuar. Considere o caso onde a divisão de ponto flutuante está envolvido (como o seu caso):
lookupTable[i] = i / 255f;
Neste caso, a tabela de consulta deve ser mais rápido do que usar cálculo direto. Quanto mais complexa a matemática (trigonometria, etc.), maior será o ganho de desempenho. Outra utilização comum é a gama correção de uma imagem (função exponencial).
Outras dicas
Lookup? Nós não precisamos de tabelas de pesquisa stinkin!
float floatVal = (float)byteVal;