Задать вопрос
ilyazh
@ilyazh
Инженер-программист

Постоянные запросы к QMap или локальная копия объекта. Где лучшая производительность?

Помогите разобраться в вопросе. Пишу код с использованием Qt. Есть именованный список QMap map.
Как лучше с точки зрения производительности делать многократные запросы к одному и тому же элементу списка, но запрашивая разные поля структуры?

Есть два варианта:
Каждый раз выполнять map.value("key").Поле-структуры; или сделать локальную копию внутри функции struct p = map.key..... и далее обращаться к ней p.Поле-структуры??

Мне кажется, что map.value() каждый раз выполняет поиск одного и того же элемента, что несколько наглядно. Поясните пожалуйста этот момент, или где почитать?
  • Вопрос задан
  • 224 просмотра
Подписаться 3 Простой Комментировать
Решения вопроса 1
vt4a2h
@vt4a2h
Senior software engineer (C++/Qt/boost)
Ваш код тормозит? Если да, то профилируйте, и смотрите где. Если не профилировали, то и нечего говорить о производительности :)

Метод value всегда вернёт копию значения. Т.е. логично её где-то сохранить, если вам надо несколько раз обращаться к разным полям. Можно избежать копирования, используя итератор или константную ссылку + оператор [] у мапы.

Почитать в официальной документации Qt. Можно ещё на QHash посмотреть, там поиск быстрее, но на ключ накладываются другие ограничения.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы