Я думаю, что производительность очень сильно зависит от алгоритма и платформы, на которой работает программное обеспечение.
Если вы выполняете вычисления матрицы / массива на платформе X86, среда выполнения может оптимизировать ее для использования SSE, представляющего собой расширенный набор команд только с плавающей запятой / двойной точностью.
На других платформах среда выполнения может быть оптимизирована под OpenCL (я не верю, что кто-то сейчас так делает, но это может произойти :). Я понятия не имею, что работает на такой платформе быстрее всего и при каких условиях. Возможно, OpenCL оптимизирован для целочисленной рабочей нагрузки.
В этих условиях я бы пришел к выводу, что на данном этапе нецелесообразно оптимизировать тип данных (float или int), а просто оптимизировать читаемость кода.
Если ваш код крайне критичен к производительности, и вы точно знаете, на каком оборудовании будет работать система сейчас и в будущем, вы можете протестировать типичные рабочие нагрузки с помощью различных алгоритмов и выбрать тот, который лучше всего соответствует вашим потребностям.
Но в целом, просто используйте алгоритм, который вы можете понять, сохраняйте код читабельным, и, таким образом, количество ошибок будет низким. Быстрый код не стоит так много, если результаты не верны:)