У меня есть 50 (больших) деревьев решений, которые в настоящее время сериализуются (в предварительном порядке) как отдельные длинные строки. Все строки хранятся непосредственно в файле декларации .cpp, чтобы избежать необходимости их чтения из файла во время выполнения. Таким образом, во время выполнения вызывается функция, которая десериализует каждую строку и создает соответствующее дерево решений, используя стандартный рекурсивный процесс. Впоследствии набор признаков (вектор двойных чисел) сбрасывается в каждом дереве решений, и выводится прогноз класса. А-ля Случайный Лес, большинство голосов взято, и окончательный класс взят.
Я попытался оптимизировать код и обнаружил, что перестройка этих больших деревьев занимает большую часть (~ 98%) моего времени выполнения. Таким образом, я хотел спросить, есть ли какой-нибудь способ жестко закодировать весь объект дерева в файл объявления .cpp. Таким образом, вместо того, чтобы восстанавливать деревья во время выполнения, объекты дерева уже доступны для прохождения во время выполнения.
Я имею доступ к C ++ 11, я думаю constexpr
функции — это ваше решение.
Вы можете написать функции для генерации данных деревьев во время компиляции, сохраняя эти данные в массивах во время компиляции.
Увидеть эта тема для примера использования.
Других решений пока нет …