|
0 / 0 / 2
Регистрация: 04.12.2016
Сообщений: 165
|
||||||
Разница в скорости работы memcpy для std::vector и raw pointer19.06.2024, 10:33. Показов 2446. Ответов 30
Метки нет (Все метки)
Во время тестов заметил, что memcpy для std::vector выполняется быстрее, чем для сырого указателя, решил поподробнее это протестировать. Привожу код:
memcpy float* time = 0.00882006 memcpy rstr* time = 0.00874019 memcpy vector time = 0.00342417 А для следующих двух вот так memcpy float* time = 0.00222993 memcpy rstr* time = 0.00216913 memcpy vector time = 0.00342107 memcpy float* time = 0.00222898 memcpy rstr* time = 0.00218987 memcpy vector time = 0.00340581 То есть можно сделать вывод, что std::vector как-то грамотнее использует каналы DDR, данные качаются быстрее, чем через сырые указатели. Однако, когда данные кэшированы, вектор работает хуже. Правильны ли мои выводы и что же это за особенность реализации std::vector, которая позволяет эму так выигрывать в скорости?
0
|
||||||
| 19.06.2024, 10:33 | |
|
Ответы с готовыми решениями:
30
Тестирование скорости обычного std::vector на x86, x64 Windows Выделение памяти для вектора std::vector<iris> *v = new std::vector<iris> |
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 19.06.2024, 12:20 | ||
|
Плюс, не храните эти данные последовательно, выделите все куски динамически, то ли через new или вектор. То есть, ваш тест абсолютно не показателен.
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 19.06.2024, 12:32 | ||
|
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 19.06.2024, 23:29 | ||
|
Или я чего то не знаю ? УБ нет при неинциализированных данных, как я раньше писал, оно будет тольео при логическом использовании тех самых данных.
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||||
| 20.06.2024, 00:16 | |||||||
|
Что такое UB по-вашему? Добавлено через 27 минут Ждал, ждал... Хотел развить диалог, но лень дальше ждать ответа. В общем. Это будет не UB только в C++26. Там это будет erroneous behavior. Я тут уже когда-то говорил, что комитет старается сокращать число UB, которые сложно проявить на практике. Так что это ожидаемо. А пока, до этого момента подобный код 20 c лишним лет считался кодом с UB. За исключением операций с типом char и байтами, работы с memcpy и т.п.
1
|
|||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 20.06.2024, 00:21 | |||
|
То есть, чем глубже УБ тем непредсказуемый результат. УБ высшего уровня, на уровне пользователя, тот же выход за пределы массива,, это не УБ вовсе.
0
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||||
| 20.06.2024, 00:28 | ||||
|
Пошел поискать для вас понятный источник про это нововведение и нашел золото:
Добавлено через 1 минуту ![]() Это термин юридический для обозначения ситуаций в коде, для которых нет формальных гарантий.
0
|
||||
|
фрилансер
6509 / 5768 / 1135
Регистрация: 11.10.2019
Сообщений: 15,408
|
|||
| 20.06.2024, 08:05 | |||
|
Кликните здесь для просмотра всего текста
ЁБ
![]() Шутка. ПочтиНо обычно компилятор, если UB заметил, просто сделает так, что этот участок не будет выполнен - так, на всякий случай
0
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 20.06.2024, 09:08 | |
|
Алексей1153, ну реакция компилятора (в том числе звонок в полицию, запуск игры, или баллистической ракеты) - это просто следствие отсутствия гарантий от стандарта. Т.е. официальный документ в этом случае умыл руки. А компилятор может вообще ничего не делать в этой ситуации - ничего не обнаруживать, ничего не обрабатывать.
0
|
|
|
фрилансер
6509 / 5768 / 1135
Регистрация: 11.10.2019
Сообщений: 15,408
|
|
| 20.06.2024, 09:11 | |
|
DrOffset, это я больше про беспечность SmallEvil. Как-то он легко относится к UB. Я вот везде пытаюсь рассмотреть, потому что это больно
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 20.06.2024, 09:18 | |
|
Алексей1153, я думаю он нормально относится, только вот почему-то он считал за UB только какие-то спецэффекты. Связывать UB со спецэффектами - это все равно что связывать нарушение правил дорожного движения с аварией. Не любое нарушение будет приводить к авариям или штрафам, но от того, что кто-то втихаря перебежал дорогу на красный и никто этого не заметил и никто не пострадал, нарушение правил не перестанет быть нарушением правил.
Почему программисты реагируют на UB? Не потому что оно всегда будет приводить к авариям, а потому что оно может привести к аварии. Вот это вот "может" совершенно недопустимо в серьезной разработке, потому что вносит дополнительный фактор риска в продукт. В серьезных делах факторы риска разумно будет минимизировать, даже если они кажутся маловероятными.
0
|
|
|
COM‐пропагандист
|
||
| 22.06.2024, 07:24 | ||
|
0
|
||
| 22.06.2024, 07:24 | |
|
Как передать целочисленную матрицу типа std::vector<std::vector<int> > в функцию? Ошибка: E2034 Cannot convert 'int' to 'std::vector<std::vector<TRabbitCell,std::allocator<TRabbitCell>>... Как лучше организовать доступ к std::vector<std::vector>-полю класса
Как изменять размер std::vector<std::vector>? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|