где я могу найти байт для таблицы подстановки с плавающей запятой?
Вопрос
Изначально я искал способ преобразовать byte в float и нашел ответы, которые указывают на то, что самым быстрым было создать таблицу подстановки.
Поэтому мне было интересно, знает ли кто-нибудь о уже существующей таблице подстановки, которую я могу использовать.
Решение
Обычно вы инициализируете таблицу подстановки, используя несколько строк кода и цикл for или что-то другое, подходящее для вашей цели.Это полезно только в том случае, если вы выполняете большое количество преобразований с конечным числом возможных входных данных.
Приведенный ниже пример предназначен только для демонстрации базовой техники построения и использования справочной таблицы.Если не задействовать больше математики, то на самом деле было бы снижение производительности, если бы вы реализовали это (см. Ниже).
float[] lookupTable = new float[256];
for (int i = 0; i < 256; i++)
{
lookupTable[i] = (float)i;
}
float convertedValue = lookupTable[byteValue];
Код написан на C #, у меня нет опыта работы с objective C.В C ++ объявление массива было бы немного другим, но вы поняли идею.
Когда следует использовать таблицу подстановки?
В приведенном выше примере прироста производительности нет, поскольку не требуется никаких вычислений, просто преобразование из byte в float.Рассмотрим случай, когда используется деление с плавающей запятой (например, в вашем случае).:
lookupTable[i] = i / 255f;
В этом случае таблица подстановки должна быть быстрее, чем при использовании прямого вычисления.Чем сложнее математика (тригонометрия и т.д.), тем больше прирост производительности.Другим распространенным применением является гамма-коррекция изображения (экспоненциальная функция).
Другие советы
Таблица подстановки?Нам не нужны никакие вонючие справочные таблицы!
float floatVal = (float)byteVal;