Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для WinstonCherchil
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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.06.2013, 23:43
Ответы с готовыми решениями:

Aser v5 i7 u - очень медленная загрузка системы и такая же медленная работа приложений
Всем привет. Полгода назад купил ноут ( aser v5 i7 u) . Все было нормально, но неделю назад начал не много тормозить, всегда долго...

ASUS X553MA: очень медленная работа, что нужно предпринять? Windows 10 64-bit
Зашёл к знакомому настроить ноутбук ASUS X553MA, поставил браузеров, проигрывателей. Он медленновато работал, я это отнёс на его...

очень медленная работа в браузере
Проблема собственно в заголовке. После нового года мозила и стим стали безбожно тормозить. страницы с маленьким объемом флеша еще куда не...

8
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
05.06.2013, 23:46
Цитата Сообщение от WinstonCherchil Посмотреть сообщение
Действительно ли это так?
Действительно. Для высокопроизводительных программ может стать критичным, ибо выделение памяти вещь медленная

Добавлено через 1 минуту
Если нужно постоянно создавать множество объектов одного типа, а потом они становятся не нужны, то можно создать пул объектов и брать их оттуда.
Как вариант выделять память сразу с запасом. Можно написать собственный аспределитель, но это может быть чревато кучей ошибок, багов и т.д.
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
05.06.2013, 23:50
WinstonCherchil, да. Все дело в том, что new это универсальный оператор на все случаи жизни. Он выделяет память и под POD-типы и под пользовательские объекты. Это достигается благодаря записи размера блока до, либо после непосредственно самого блока. И там еще есть некие сложности при наследовании, что заставляет размер выделенной памяти разбухать. Если мы знаем размер объекта и он не изменяется, то можем написать собственную реализацию этого оператора для класса, это значительно повысит производительность. Главное, не забыть написать и парную операцию по удалению, ну и не лепить абы что, а знать как работает универсальный оператор new, какие исключения и когда кидает, вообщем задача нетривиальна.
1
 Аватар для Olivеr
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
05.06.2013, 23:52
Можно написать собственный аллокатор разделив при этом понятия выделения и освобождения памяти, конструирования и разрушения объектов.
1
 Аватар для WinstonCherchil
7 / 7 / 2
Регистрация: 20.01.2011
Сообщений: 73
06.06.2013, 00:34  [ТС]
Всем спасибо за оперативные и информативные ответы, а также зато что не придется искать батлнеки.

Выделю 1 раз память под очередь (размер определю эксперементально). Как заработает уже буду уже оптимизировать.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
06.06.2013, 00:36
Если хотите реализовывать свой оператор, советую почитать Скотта Мейерса, "Эффективное использование С++. 50 рекомендаций по улучшению ваших программ и проектов". Он данному вопросу уделил достаточно пристальное внимание.
1
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
06.06.2013, 00:38
К посту 6:
В книге Солтер Н.А., Клепер С.Дж. - "C++ для профессионалов" так же освещается вопрос перегрузки new
1
 Аватар для WinstonCherchil
7 / 7 / 2
Регистрация: 20.01.2011
Сообщений: 73
06.06.2013, 01:55  [ТС]
Цитата Сообщение от MrGluck Посмотреть сообщение
Если хотите реализовывать свой оператор
Врядли буду изобретать велосипед. Скорее скопипащу откуда-нибудь, или свалку на 100МБ устрою, лишь бы работало. Не то что бы я буковок боюсь, просто прога пишется в свободное время, на одном энтузиазме. И чем больше пишешь тем еще больше надо написать. А книжки на работе почитаю =)))) За них отдельное спасибо.

А! И раз уж тему создал, критические секции быстро работают? =)))
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
06.06.2013, 01:57
WinstonCherchil,

Не по теме:

это не велосипед

. По моему, сути написания вы так и не поняли. Но со временем осознаете.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.06.2013, 01:57
Помогаю со студенческими работами здесь

Очень медленная работа компа
Комп очень медленно работает. Такое впечатление что его постоянно что-то грузит. Находился в сети с другим зараженным компом, возможно...

Очень медленная установка Windows 7
Здравствуйте.Вообщем у меня не известная проблема.Когда начинаю установку моя сидюк раскручивает диск, казалось бы все нормально, но как...

Очень медленная запись в бинарник
Здравствуйте! Приходится писать большие бинарные файлы из 4-байтных чисел real (использую Intel Fortran+Visual Studio). Для этого...

Очень медленная установка windows
Столкнулся с проблемой интересной - windows очень медленно устанавливается, можно сказать что в определенной точке установки (1 раз - 15%,...

Очень медленная работа Вин 10
Имеется ноутбку ASUS VivoBook X540SA с ОС Вин 10 Home, драйвера установлены с оф. сайта...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Переходник 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 и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru