С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
6 / 6 / 1
Регистрация: 25.02.2016
Сообщений: 342
1

Сравнение производительности

24.01.2019, 00:40. Показов 1297. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Вопрос довольно простой, но мне важно убедиться)

C++Выделить код
1
2
3
4
5
6
vector<Object*> v;
unordered_map<unsigned int, Object*> m;
 
 
auto o1 = v[i];
auto o2 = m[i]
Что будет быстрее и на сколько большая разница?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.01.2019, 00:40
Ответы с готовыми решениями:

Сравнение производительности
Приветствую. Начал изучать асм вставки. Решил ради наглядности написать несколько функций и...

Сравнение производительности С++ и С# на конкретном примере
Приветствую знатоков С++ ! Можно ли на С++ вычислить быстрее, чем на C#, переменные для решения...

Сравнение производительности одного и того же кода С++ и C#
В интернете натолкнулся на одну статью. Где описывается производительность одного и того же кода на...

Сравнение текста из файла и сравнение с текстом в программе char - Dev C++
Доброго времени суток! Имеется код программы: ifstream test(&quot;primer.txt&quot;); char awm = &quot;kod&quot;;...

4
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
24.01.2019, 00:45 2
При доступе к случайному элементу в скорости, конечно, побеждает вектор, ведь у него сложность доступа O(1), а у map'а O(log n)

Вот тут в поле Complexity можно убедиться в этом: vector map
1
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
24.01.2019, 01:05 3
Цитата Сообщение от Cortas Посмотреть сообщение
Вот тут в поле Complexity можно убедиться в этом
У вас не тот map по ссылке.
У автора вот этот.
1
6 / 6 / 1
Регистрация: 25.02.2016
Сообщений: 342
24.01.2019, 01:27  [ТС] 4
Вот там среднее время - константа. Просто к чему я спрашиваю
У меня объекты хранятся по id, где id совпадает с индексом контейнера.

Если использовать вектор - все отлично по скорости, но есть небольшая проблема:
Если, допустим, я добавлю в контейнер 100 000 элементов, а затем удалю 99 999 первых, то у меня получится большое окно от 0 и до 99 999 элемента. А сдвинуть последний объект я не могу, потому что он жестко привязан к id для мгновенного доступа.
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
24.01.2019, 01:56 5
Лучший ответ Сообщение было отмечено Kertis138 как решение

Решение

Kertis138, для unordered map для поиска лучше использовать метод find, т.к. operator[] также создает элемент с заданным ключом, если он не был найден.

Цитата Сообщение от Kertis138 Посмотреть сообщение
Что будет быстрее и на сколько большая разница?
Вам лучше всего испытать разные подходы на своем боевом коде, а потом оценить производительность с помощью профилировщика. Гипотетические оценки ответ "на сколько" не дадут.
0
24.01.2019, 01:56
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.01.2019, 01:56
Помогаю со студенческими работами здесь

Падение производительности на gcc
Кто-нибудь сталкивался с тем, что при компиляции gcc, если разносить определение класса и...

Анализ производительности программы
Прошу прощения, не смог найти ответ на форуме, да и затрудняюсь, в какую ветку лучше написать......

Определить рост производительности
За 2010 г производительность труда на предприятии выросла на p1%, за 2011 и за 2012 на p2 и p3%....

Оптимизация производительности программ на С++
Какие более известные узкие места есть в программах на С++? Из того что я знаю: 1. Должен быть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru