Кто-нибудь знает, является ли boost::get
для boost::variant
ресурсоемкой операцией или нет.
В настоящий момент я выполняю рефакторинг некоторого старого кода в критической для производительности части , где "вариантирование" реализовывалось контейнерами для каждого возможного типа и соответствовало enum
.
Очевидно, что это быстро, но уродливо и сейчас, когда мне нужно реорганизовать код, чтобы он работал с еще одним типом , я хочу избавиться от этой старой части кода и заменить это с boost::variant
.
Кроме того, я не могу просто «профилировать оба варианта и сравнивать», потому что этот рефакторинг - боль в заднице и отнимает много времени.
Итак, если кто-то знает, как boost::get<x>
выполняет сравнение с диспетчеризацией общего типа enum-based
, я был бы признателен, если бы вы поделились этими знаниями.
Существует еще один вариант использования boost::variant<types>
с пользовательским посетителем (как описано в boost::variant
документации) - может ли это быть быстрее, чем boost::get
в моем случае?
Спасибо.