ilyazh
@ilyazh
Инженер-испытатель ЭКБ

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

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

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

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

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

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

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

Войти через TM ID
Похожие вопросы
HARMAN Connected Services Нижний Новгород
от 60 000 до 120 000 руб.
Soft Media Int. Пенза
от 125 000 до 225 000 руб.
ООО ЭНЕРГИЯ Новосибирск
от 60 000 до 90 000 руб.
14 авг. 2018, в 19:03
10000 руб./за проект
14 авг. 2018, в 18:10
1000 руб./в час
14 авг. 2018, в 18:01
12000 руб./за проект