170 похожих чатов

У вас правда приложение проводит десятки процентов процессорного времени в

malloc?

33 ответов

29 просмотров

что значит десятки. у меня вот сервер опроса по модбасу на Qt проводит в malloc 86% ибо на каждый запрос создается свой reply (привет Qt) вы скажите ну возьмите напишите свой сервер + напишите пулл обьектов для reply... вообще кто придумал эти фреймворки... надо же все самим писать.

Stas Koynov
что значит десятки. у меня вот сервер опроса по мо...

А платформа какая и железо? Мне просто интересно

Alexander "SonnySlave" Zaitsev
ух жесть то какая

ну самое забавное, что выделяем то детские 256 байт для модбас пакета. + qObject делает второе выделение для своего pimpl. просто работа сервера опрос девайсов, и генерация событий для АРМ оператора. получается опросили, сложили регистры в общую карту, проверили по маске если что-то стоит, сообщяем оператору. повторяем цикл. получаем что больше всего торчим в выделении памяти для reply

****
А платформа какая и железо? Мне просто интересно

серверная убунту. ну железо разное, в основном промышленный ПК боксер. если АРМ совмещен с сервером, то всякие iRobo или китайский аналог. но туда уже стявят линух с GUI скажем кубунту в последний раз ставили.

Stas Koynov
что значит десятки. у меня вот сервер опроса по мо...

для начала - зачем создавать QObject на каждый запрос?

Андрей Руссков
для начала - зачем создавать QObject на каждый зап...

ну что значит зачем. reply явл-ся КОбжект! потом не я же его создаю. мне его клиент возвращает при запросе. Почему нельзя переиспользовать reply? ну это вы у авторов Qt спросите. новый запрос - новый reply.

Stas Koynov
ну самое забавное, что выделяем то детские 256 бай...

Можно попробовать подключить кастомный алокатор и переопределить new только для объекта reply. Как тут https://www.qt.io/blog/a-fast-and-thread-safe-pool-allocator-for-qt-part-1

Stas Koynov
что значит десятки. у меня вот сервер опроса по мо...

Ну Qt это считай Java, там производительностью никогда не пахло

Stas Koynov
ну самое забавное, что выделяем то детские 256 бай...

У вас просто такой сценарий использования что возможно лучше не использовать qt для модбаса. Оно же слабо предназначено для опроса большого количества устройств

Kirill Bolshakov
Ну Qt это считай Java, там производительностью ник...

Это.... Говори за себя пожалуйста. Все там ок с производительностью

Kirill Bolshakov
Ну Qt это считай Java, там производительностью ник...

"Qt считай Java" ну тут разговор можно даже не начинать

Kirill Bolshakov
Ну Qt это считай Java, там производительностью ник...

Qt сильно не кэш френдли если абсолютно всё в системе не на Qt и не одной версии (очень скучаю по смартфонам Nokia Series S60, где как раз так было), это да, тоже не люблю Qt из-за этого, но это далеко не Java или C# где неотключаемый сборщик мусора и огромный рантайм с бесконечными пересборками всего на лету, которые убивают мобильность (батарею) и порой создают лаги в неподходящий момент

Elle (Элль) Solomina (Соломина)
Qt сильно не кэш френдли если абсолютно всё в сист...

А что, все так вот должны прям совсем быть cache friendly ?

Ilya Zviagin
А что, все так вот должны прям совсем быть cache f...

при прочих равных - да, было бы очень неплохо

Alexander "SonnySlave" Zaitsev
при прочих равных - да, было бы очень неплохо

Кэш имеет только одну стратегию, вовсе не факт, что она будет ложиться под все виды приложений.

Ilya Zviagin
Кэш имеет только одну стратегию, вовсе не факт, чт...

можно привести около-реальные примеры, где cache-friendly библиотека будет только вредить для перфа?

Alexander "SonnySlave" Zaitsev
при прочих равных - да, было бы очень неплохо

Ну и далее постановка вопроса неверная. Не приложение для кэша, а кэш для приложения.

Ilya Zviagin
Ну и далее постановка вопроса неверная. Не приложе...

так никто и не собирается переписывать приложение. тут всего лишь запрос к библиотеке быть cache friendly, если она таковой может быть

Dmitriy [Отпуск]
Спасибо, классная опечатка))) cache, не cash...

В рамках облака это была бы не опечатка..

Ilya Zviagin
Это.... Говори за себя пожалуйста. Все там ок с пр...

А тот факт, что это реально кучи динамических аллокаций всего и вся? Если это не какой-нибудь UI, где можно однажды аллоцироваться и успокоиться, то использование подобного фреймворка - настоящая катастрофа для мемори-менеджмента, даже в отрыве от нелокальности, не? Фрагментация, лукапы, куча системного сервисного мусора для каждой аллокации.

Sergey Anisimov
А тот факт, что это реально кучи динамических алло...

Подумать только, мы динамически аллоцируем все подряд, референсим в родителей, динамически (ре)аллоцируя память в референс-контейнерах родителей таким образом. Можно даже картинку соответствующую вставить на тему "чтобы аллоцировать пока аллоцируешь".

Nikita Khomutov
Поэтому есть FastPimpl

В Qt не используется, насколько я знаю.

Nikita Khomutov
Поэтому есть FastPimpl

Но в Qt это не завезли, там pimpl выделяется в хипе

Anatoly Shirokov
Но в Qt это не завезли, там pimpl выделяется в хип...

Хип тоже уже довольно давно не так страшно, как было раньше

Denis P
Хип тоже уже довольно давно не так страшно, как бы...

Ну как сказать. Если верить вики dlmalloc появился где-то в 1987 году. С тех пор на сколько я знаю в ptmalloc добавили трэдлокал кеширование и ... это все изменения которые произошли. Ну еще некоторые эксплойты перекрыли. Кажется единственное что изменилось - это железо стало быстрее, благодаря чему gui можно писать как угодно. Если же забыть про не требовательные к перфу задачи вроде gui, паттерн доступа к памяти все еще играет важную роль.

magras
Ну как сказать. Если верить вики dlmalloc появился...

Речь о том, что за редким исключением на с++ даже если писать в стилистике шаред птры + всякие анордеред мапы, все равно будет быстро )

Похожие вопросы

Обсуждают сегодня

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта