![]() |
|||||||||||
std::vector доступ по индексу vs доступ по итератору15.04.2013, 13:30. Показов 13380. Ответов 24
Метки нет Все метки)
(
в релизе картина с точностью до наоборот - итераторы в 2 раза быстрее. Как сие можно объяснить?
0
|
15.04.2013, 13:30 | |
Ответы с готовыми решениями:
24
Ошибка: E2034 Cannot convert 'int' to 'std::vector<std::vector<TRabbitCell,std::allocator<TRabbitCell>>... Доступ к индексу пиктограммы Как сделать массив, доступ к элементам, в котором, возможен и по индексу и по строковому ключу? |
![]() |
||||||
15.04.2013, 15:16 | ||||||
не эффективный цикл, на каждой итерации идет обращение к tmp.end().
Добавлено через 2 минуты Заменить на
0
|
В астрале
![]() ![]() 8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
15.04.2013, 16:35 | |
oxotnik,
0
|
В астрале
![]() ![]() 8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
15.04.2013, 18:15 | |
oxotnik, Ну ок... Вообще в debug версии вполне возможны некие проверки и для gcc. Собрано с флажком -D_GLIBCXX_DEBUG? А вообще в чем вопрос? Вполне резонно, что в debug версии итераторы будут более тормозные.
0
|
![]() |
|
15.04.2013, 18:45 | |
Про дебаг написали выше, а про релиз
0
|
Higher
![]() |
|
15.04.2013, 22:48 | |
Зависит от компилятора и ключей оптимизации. На ассемблерном-то уровне понятно, что обход через указатели быстрее обхода через индексы, но нормальный компилятор в таких вещах разбирается лучше.
И даже если ваш компилятор ничего не оптимизировал, я никогда не поверю в то, что способ получения адреса элемента ускорит обход в 2 раза - доступ к памяти никуда не делся, а ведь он пожирает ~200 процессорных тактов. Мелкая арифметика на фоне этой операции вообще ни на что не влияет. Обновил страничку :) Да, слона то я и не приметил. Если не использовать магические ключики оптимизаций, то [] не заинлайнится. Хотя, такое таки маловероятно - сложно представить себе человека, который задумывается о перформансе и при этом не включил хотя бы -O1. Тогда, если оптимизация таки использовалась, дело в том, что компилятор предпринял разные оптимизации для этих циклов. Добавлено через 2 минуты Кстати, мне лень вникать в логику второго кода, но на лвс он работает более 10 секунд. Таки есть подозрение, что циклы немного неэквивалентны.
0
|
Higher
![]() |
|
15.04.2013, 23:21 | |
Потому что первый на гцц с оптимизациями выполняется за 0.1 секунду, второй - более 10 секунд.
Хотя, во втором цикле действительно не так то просто отследить, что не будет выхода за границы или чего-то подобного. Посмотрел на асмовыхлоп гцц на первом цикле - лол, да и только.
0
|
![]() ![]() 2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
|
|
15.04.2013, 23:34 | |
Внутри цикла по m во втором коде я вижу обнуление индекса в строках 6 и 12, а в первом коде итератор обнуляется только в строке 12 (ну и один раз до цикла). А второй раз что? Не нужно? Или это я настолько "с наскока", что ничего не понял?
2
|
![]() |
|
16.04.2013, 10:28 [ТС] | |
Чего конкретно?
К примеру есть указатели, и есть ссылки. Каюсь, замерял немного кривовато, с помощюб QTime::elapsed(), но в принципе для теста хватит.
0
|
16.04.2013, 10:28 | |
Помогаю со студенческими работами здесь
20
Как в std::vector получить доступ к методам элементов?
Как передать целочисленную матрицу типа std::vector<std::vector<int> > в функцию?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
MVC фреймворк в PHP
Jason-Webb 19.04.2025
Архитектурный паттерн Model-View-Controller (MVC) – это не просто модный термин из мира веб-разработки. Для PHP-программистов это фундаментальный подход к организации кода, который радикально меняет. . .
|
Dictionary Comprehensions в Python
py-thonny 19.04.2025
Python славится своей выразительностью и лаконичностью, что позволяет писать чистый и понятный код. Среди множества синтаксических конструкций языка особое место занимают словарные включения. . .
|
Шаблоны и протоколы для создания устойчивых микросервисов
ArchitectMsa 19.04.2025
Микросервисы — архитектурный подход, разбивающий сложные приложения на небольшие, независимые компоненты. Вместо монолитного гиганта, система превращается в созвездие небольших взаимодействующих. . .
|
Изменяемые и неизменяемые типы в Python
py-thonny 19.04.2025
Python славится своей гибкостью и интуитивной понятностью, а одна из главных его особенностей — это система типов данных. В этом языке все, включая числа, строки, функции и даже классы, является. . .
|
Интеграция Hangfire с RabbitMQ в проектах C#.NET
stackOverflow 18.04.2025
Разработка современных . NET-приложений часто требует выполнения задач "за кулисами". Это может быть отправка email-уведомлений, генерация отчётов, обработка загруженных файлов или синхронизация. . .
|
Построение эффективных запросов в микросервисной архитектуре: Стратегии и практики
ArchitectMsa 18.04.2025
Микросервисная архитектура принесла с собой много преимуществ — возможность независимого масштабирования сервисов, технологическую гибкость и четкое разграничение ответственности. Но как часто бывает. . .
|
Префабы в Unity: Использование, хранение, управление
GameUnited 18.04.2025
Префабы — один из краеугольных элементов разработки игр в Unity, представляющий собой шаблоны объектов, которые можно многократно использовать в различных сценах. Они позволяют создавать составные. . .
|
RabbitMQ как шина данных в интеграционных решениях на C# (с MassTransit)
stackOverflow 18.04.2025
Современный бизнес опирается на множество специализированных программных систем, каждая из которых заточена под решение конкретных задач. CRM управляет отношениями с клиентами, ERP контролирует. . .
|
Типы в TypeScript
run.dev 18.04.2025
TypeScript представляет собой мощное расширение JavaScript, которое добавляет статическую типизацию в этот динамический язык. В JavaScript, где переменная может свободно менять тип в процессе. . .
|
Погружение в Kafka: Концепции и примеры на C# с ASP.NET Core
stackOverflow 18.04.2025
Apache Kafka изменила подход к обработке данных в распределенных системах. Эта платформа потоковой передачи данных выходит далеко за рамки обычной шины сообщений, предлагая мощные возможности,. . .
|