Russian Qt Forum
Ноябрь 24, 2024, 21:42
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Чем лучше всего профилировать Qt-ешные программы?
Страниц:
1
[
2
]
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Чем лучше всего профилировать Qt-ешные программы? (Прочитано 20259 раз)
OKTA
Гость
Re: Чем лучше всего профилировать Qt-ешные программы?
«
Ответ #15 :
Май 20, 2014, 19:59 »
Нашел тему про shared_ptr.
http://stackoverflow.com/questions/3628081/shared-ptr-horrible-speed
Правда ли?
Записан
Bepec
Гость
Re: Чем лучше всего профилировать Qt-ешные программы?
«
Ответ #16 :
Май 20, 2014, 21:15 »
Конечно медленнее. Там же внутри обертка с счётчиком.
Делали проект по приёму данных с оптоволокна - пришлось выкинуть нафиг все эти крутости аля "boost::shared_ptr". Ибо даже 10Гбит принять не могли - тормозило.
«
Последнее редактирование: Май 20, 2014, 22:30 от Bepec
»
Записан
Old
Джедай : наставник для всех
Online
Сообщений: 4350
Re: Чем лучше всего профилировать Qt-ешные программы?
«
Ответ #17 :
Май 20, 2014, 21:29 »
Цитата: Bepec от Май 20, 2014, 21:15
Делали проект по приёму данных с оптоволокна - пришлось выкинуть нафиг все эти крутости аля "boost::shared_ptr". Ибо даже 10Гб принять не могли - тормозило.
Мне даже страшно представить что вы с ними делали.
Покажите пожалуйста как вы их использовали при приеме данных?
Записан
Bepec
Гость
Re: Чем лучше всего профилировать Qt-ешные программы?
«
Ответ #18 :
Май 20, 2014, 22:32 »
Не я, а коллега, яро доказывающий что обычный указатели - сакс, а shared - крутотень!
Задача простая была - приём структур, анализ, отбраковка, передача "чистых" данных дальше.
Записан
Old
Джедай : наставник для всех
Online
Сообщений: 4350
Re: Чем лучше всего профилировать Qt-ешные программы?
«
Ответ #19 :
Май 20, 2014, 22:58 »
Цитата: Bepec от Май 20, 2014, 22:32
Задача простая была - приём структур, анализ, отбраковка, передача "чистых" данных дальше.
Вот это и не понятно. Как он использовал shared_ptr в этой задаче, что была просадка в скорости?
Где здесь происходит интенсивная работа с указателями?
Записан
Bepec
Гость
Re: Чем лучше всего профилировать Qt-ешные программы?
«
Ответ #20 :
Май 21, 2014, 00:58 »
Везде где использовались указатели - данные. Структуры создаваемые из данных и иже с ним.
Записан
Old
Джедай : наставник для всех
Online
Сообщений: 4350
Re: Чем лучше всего профилировать Qt-ешные программы?
«
Ответ #21 :
Май 21, 2014, 06:03 »
Цитата: Bepec от Май 21, 2014, 00:58
Везде где использовались указатели - данные. Структуры создаваемые из данных и иже с ним.
Это не убедительно. У меня (да и не только у меня) они используются в проектах с очень высокой нагрузкой и спокойно выдерживаю. Не представляю как указатели могут стать "бутылочным горлышком" при приеме и обработке данных.
Получается, что у вас создание/использование указателя соизмеримо с самой обработкой?
«
Последнее редактирование: Май 21, 2014, 06:19 от Old
»
Записан
_OLEGator_
Гость
Re: Чем лучше всего профилировать Qt-ешные программы?
«
Ответ #22 :
Май 21, 2014, 09:07 »
Цитата: Bepec от Май 20, 2014, 21:15
Конечно медленнее. Там же внутри обертка с счётчиком.
Можно подумать, что счетчик синхронизируется с сайтом майкрософт.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Чем лучше всего профилировать Qt-ешные программы?
«
Ответ #23 :
Май 21, 2014, 10:33 »
Цитата: Hrundel от Май 20, 2014, 19:05
поэтому оставляю
линк на статью
,
Очень понравилось. В основном чтение статей сводится к запоминанию инфы (часто без всякого осмысления). Здесь пытаются пробудить "соображалку"
Цитировать
Является ли 64-битное чтение / запись атомарной операцией?
За это допущение я получал
В общем случае нет, адрес может быть не кратен 8. И вообще присваивание long long компилятор может выполнить как 2 int'ов. Поэтому строго tbb::atomic
Цитировать
class AbstractAction {
public:
AbstractAction(Executor *executor) {
executor->add(this);
...
}
...
virtual void Run() = 0;
}
Ну тут очевидно - родительский конструктор еще не вызван, а executor уже щемится
Однако о др вещах я без понятия - напр что то за "shadow"
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Чем лучше всего профилировать Qt-ешные программы?
«
Ответ #24 :
Май 21, 2014, 10:36 »
Цитата: Old от Май 21, 2014, 06:03
Получается, что у вас создание/использование указателя соизмеримо с самой обработкой?
Такие случаи возможны (напр при работе с геометрией) - хотя не так уж часты
Записан
Old
Джедай : наставник для всех
Online
Сообщений: 4350
Re: Чем лучше всего профилировать Qt-ешные программы?
«
Ответ #25 :
Май 21, 2014, 11:19 »
Цитата: Igors от Май 21, 2014, 10:36
Такие случаи возможны (напр при работе с геометрией) - хотя не так уж часты
Покажите на примере. Только не нужно предлагать "синтетику".
На синтетических тестах я могу показать, что и вызовы виртуальных методов сильно тормозят выполнение или конструкторы/деструкторы. Но в реальной жизни мы подобные издержки либо игнорируем, либо обходим изменяя алгоритм.
В данном же случае, мы говорим про работу с сетью (прием/обработка/отправка), представляете задержки? Могут они быть соизмеримы?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Чем лучше всего профилировать Qt-ешные программы?
«
Ответ #26 :
Май 21, 2014, 11:40 »
Цитата: Old от Май 21, 2014, 11:19
Покажите на примере. Только не нужно предлагать "синтетику".
Так вот же и привели (знакомая задача)
Цитата: OKTA от Май 20, 2014, 19:59
Нашел тему про shared_ptr.
http://stackoverflow.com/questions/3628081/shared-ptr-horrible-speed
Цитата: Old от Май 21, 2014, 11:19
В данном же случае, мы говорим про работу с сетью (прием/обработка/отправка), представляете задержки? Могут они быть соизмеримы?
Та ну..
Зачем такие крайности? На всякое правило найдется исключение, это нормально
Записан
Bepec
Гость
Re: Чем лучше всего профилировать Qt-ешные программы?
«
Ответ #27 :
Май 21, 2014, 11:57 »
Я не могу предоставить вам тест, ведь у меня теперь нет ПЛИС'а, щемящего поток инфы по оптоволокну
Записан
Old
Джедай : наставник для всех
Online
Сообщений: 4350
Re: Чем лучше всего профилировать Qt-ешные программы?
«
Ответ #28 :
Май 21, 2014, 12:17 »
Цитата: Igors от Май 21, 2014, 11:40
Так вот же и привели (знакомая задача)
Знакомая, только не понятно для чего автор использовать умный указатель со счетчиком? Это избыточно, есть другие умные указатели.
И как раз про такие задачи я и писал:
Цитата: Old от Май 21, 2014, 11:19
Но в реальной жизни ... обходим изменяя алгоритм.
Для быстрого выделения одинаковых объектов лучше использовать пулы + unique_ptr, и это решение обгонит обычные указатели.
Самый большой прирост дает именно алгоритмическая оптимизация, а не отказ от конструкторов/деструкторов и умных указателей.
Цитата: Igors от Май 21, 2014, 11:40
Та ну..
Зачем такие крайности? На всякое правило найдется исключение, это нормально
Вы про какие крайности?
«
Последнее редактирование: Май 21, 2014, 12:18 от Old
»
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Чем лучше всего профилировать Qt-ешные программы?
«
Ответ #29 :
Май 21, 2014, 12:53 »
Цитата: Old от Май 21, 2014, 12:17
Самый большой прирост дает именно алгоритмическая оптимизация, а не отказ от конструкторов/деструкторов и умных указателей.
Все верно, только "отказ" надо заменить на "использование"
Алгоритм там примерно такой
Нужно построить треугольники по множеству точек на плоскости. Строим вмещающий треугольник, затем добавляем в него точку за точкой. Добавленная попадает в какой-то треугольник, он разбивается на 3 новых. Затем ребра балансируются по Борису Николаевичу. Балансировка может вызвать изменение смежных тр-ков, в общем получается "волна" которая впрочем быстро затухает. Где-то видел анимацию видео, но навскидку не найду.
В общем типичная задача где у "грамотного" возникают проблемы
Знает-то он может и много, но вот возиться со всем этим не хочет. Бросается "изыскивать" готовое - что далеко не всегда приемлемо. А оптимизировать самому - так это ж велосипед! Умные указатели, bidirectional iterators и.т.п. - все это здесь "до одного места", знаток "не в своей тарелке"
. Поэтому человек с куда более скромными познаниями - но делающий задачу охотно, с желанием добивается лучших результатов.
Да, по поводу "балансировки", базовая задача:
Есть выпуклый 4-угольник на плоскости. Каким образом лучше разбить его на 2 треугольника? Др словами сформулировать критерий/правила "лучше"
Записан
Страниц:
1
[
2
]
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...