Я знаю, что это, вероятно, один из тех вопросов, которые «вам просто нужно попробовать», но, поскольку у меня пока нет фактических данных испытаний, я хотел бы получить некоторую информацию о вашем опыте, пока я проектирование кода.
У меня есть структура данных, которая реализует очередь приоритетов с некоторыми добавленными функциями. Обычно мне нужно добавлять кучу объектов в эту кучу за раз. Я использую алгоритмы std::make_heap()
, std::push_heap()
и std::pop_heap()
для поддержки инвариантов кучи.
Сейчас, когда я делаю вставку, я использую std::push_heap()
, чтобы добавить единственный элемент. Теперь я думаю о добавлении всех элементов за раз, используя метод std::vector::push_back()
и реорганизацию кучи. Простой push_heap()
в настоящее время, вероятно, не будет работать, поэтому мне придется использовать новый make_heap()
. Однако make_heap()
работает в (3*(last-first))
, в то время как push_heap()
принимает только log(last-first)
.
Есть ли простой способ выяснить, какой из них на самом деле быстрее в этом случае, или мне нужно подождать, пока станут доступны тестовые данные?