где я могу найти байт для таблицы подстановки с плавающей запятой?

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

  •  23-08-2019
  •  | 
  •  

Вопрос

Изначально я искал способ преобразовать 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;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top