Я пишу приложение, которое использует алгоритм Дейкстры для поиска минимальных путей в графе. Веса узлов и ребер в графе - это float
числа, поэтому алгоритм выполняет много арифметических операций с числами с плавающей запятой. Могу ли я улучшить время бега, если переведу весь вес в int
s? Являются ли арифметические операции int в Java быстрее, чем операции с плавающей запятой?
Я попытался написать простой тест, чтобы проверить это, но я не удовлетворен полученными результатами. Возможно, компилятор оптимизировал некоторые части программы, поэтому результаты меня не устраивают.
РЕДАКТИРОВАТЬ:
Проблема, которую я пытаюсь решить, находится в поле поиска информации. Приложение должно отображать ответы на запрос, представленный в виде набора ключевых слов.
Моя структура данных - это взвешенный ориентированный граф. Учитывая набор листовых узлов, мне нужно найти наименьшее дерево, которое соединяет эти узлы и показывает ответ пользователю. Веса назначаются весовой функцией, частично основанной на методе tf / idf. Пользователь не знает, какие веса я присваиваю узлам и ребрам, он просто хочет видеть ответы, относящиеся к заданному им запросу. Так что точных результатов не требуется, только возможность перечислить ответы по их весам. Просто собственное использование весовой функции (как я уже упоминал, она основано на tf / idf) дает веса с плавающей запятой, поэтому до сих пор я использовал числа с плавающей запятой.
Я надеюсь, что это добавляет некоторую предысторию вопроса.