|
7 / 7 / 2
Регистрация: 20.01.2011
Сообщений: 73
|
|
Правда что new очень медленная?05.06.2013, 23:43. Показов 1451. Ответов 8
Метки нет (Все метки)
Вобщем читал статейки в интернете про операцию new, утечки памяти и функци, которые возвращают массивы и всякие не однородные данные через указатель, и кто-то в коментах написал что new очень медленная.
Действительно ли это так? Прога, которую я пишу очень активно её будет использовать. Там 1 процесс работает с несколькими сокетами, получает сообщения из них, дешифрует их, перегоняет их в различные структуры в зависимости от типа сообщения и запихивает их уже в самописную очередь, в которой как раз и используется new. Когда другой процесс из этой очереди будет забирать эту структуру для обработки он будет уже использовать delete. (Очередь оформлена в виде класса с методами push и pull) TCP трафик будет очень интенсивный. От 1000 до "сколько сервер выжмет" сообщений в минуту на 1 сокет. Вобщем вопрос. Переписывать мне очередь, или это все байки что new медленный?
0
|
|
| 05.06.2013, 23:43 | |
|
Ответы с готовыми решениями:
8
Aser v5 i7 u - очень медленная загрузка системы и такая же медленная работа приложений ASUS X553MA: очень медленная работа, что нужно предпринять? Windows 10 64-bit очень медленная работа в браузере |
|
Неэпический
|
||
| 05.06.2013, 23:46 | ||
![]() Добавлено через 1 минуту Если нужно постоянно создавать множество объектов одного типа, а потом они становятся не нужны, то можно создать пул объектов и брать их оттуда. Как вариант выделять память сразу с запасом. Можно написать собственный аспределитель, но это может быть чревато кучей ошибок, багов и т.д.
1
|
||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 05.06.2013, 23:50 | |
|
WinstonCherchil, да. Все дело в том, что new это универсальный оператор на все случаи жизни. Он выделяет память и под POD-типы и под пользовательские объекты. Это достигается благодаря записи размера блока до, либо после непосредственно самого блока. И там еще есть некие сложности при наследовании, что заставляет размер выделенной памяти разбухать. Если мы знаем размер объекта и он не изменяется, то можем написать собственную реализацию этого оператора для класса, это значительно повысит производительность. Главное, не забыть написать и парную операцию по удалению, ну и не лепить абы что, а знать как работает универсальный оператор new, какие исключения и когда кидает, вообщем задача нетривиальна.
1
|
|
|
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
|
|
| 05.06.2013, 23:52 | |
|
Можно написать собственный аллокатор разделив при этом понятия выделения и освобождения памяти, конструирования и разрушения объектов.
1
|
|
|
7 / 7 / 2
Регистрация: 20.01.2011
Сообщений: 73
|
|
| 06.06.2013, 00:34 [ТС] | |
|
Всем спасибо за оперативные и информативные ответы, а также зато что не придется искать батлнеки.
Выделю 1 раз память под очередь (размер определю эксперементально). Как заработает уже буду уже оптимизировать.
0
|
|
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 06.06.2013, 00:36 | |
|
Если хотите реализовывать свой оператор, советую почитать Скотта Мейерса, "Эффективное использование С++. 50 рекомендаций по улучшению ваших программ и проектов". Он данному вопросу уделил достаточно пристальное внимание.
1
|
|
|
7 / 7 / 2
Регистрация: 20.01.2011
Сообщений: 73
|
||
| 06.06.2013, 01:55 [ТС] | ||
|
А! И раз уж тему создал, критические секции быстро работают? =)))
0
|
||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 06.06.2013, 01:57 | |
|
WinstonCherchil,
Не по теме: это не велосипед
0
|
|
| 06.06.2013, 01:57 | |
|
Помогаю со студенческими работами здесь
9
Очень медленная работа компа
Очень медленная запись в бинарник Очень медленная установка windows Очень медленная работа Вин 10 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|