Название: Ускорить Отправлено: Igors от Апрель 25, 2021, 10:10 Добрый день
Есть такой метод Код И всем он хорош (особенно простотой), но увы - притормаживает. Поле mChannel меняется между вызовами. Создавать любые доп контейнеры - пожалуйста, главное убрать тормоз Цитировать Закурим, ребята, закурим (ну в смысле "покажем high-end" :))Название: Re: Ускорить Отправлено: Old от Апрель 25, 2021, 10:13 Двухсвязный список как раз позволяет очень быстро узнать предыдущий элемент.
Но вы то используете исключительно QVector. :( Название: Re: Ускорить Отправлено: Racheengel от Апрель 26, 2021, 14:05 QVector кстати сам по себе - тормоз даже по сравнению с std::vector.
А тут имхо лучше построить QMap с чилда на пэрент: QMap<CData*, CData*> childToParentMap Т.к. QList придётся всё равно просматривать. Название: Re: Ускорить Отправлено: RedDog от Апрель 26, 2021, 15:06 А тут имхо лучше построить QMap с чилда на пэрент: QMap<CData*, CData*> childToParentMap Если данных много, лучше QHashНазвание: Re: Ускорить Отправлено: Igors от Апрель 26, 2021, 15:41 QVector кстати сам по себе - тормоз даже по сравнению с std::vector. mData - любой контейнер прямого доступа (конкретно у меня QList). Только никаких парент-чайлд нема :'( И я о них ничего и не говорил. Что предлагается строить? ???А тут имхо лучше построить QMap с чилда на пэрент: QMap<CData*, CData*> childToParentMap Т.к. QList придётся всё равно просматривать. Название: Re: Ускорить Отправлено: Racheengel от Апрель 27, 2021, 13:57 Не, тогда пожалуйста детальное описание данных и условие задачи в студию :) а то код похож на говнокод с багом, честно говоря...
Название: Re: Ускорить Отправлено: Igors от Апрель 27, 2021, 15:44 Не, тогда пожалуйста детальное описание данных и условие задачи в студию :) а то код похож на говнокод с багом, честно говоря... Как же Вы заблудились в ровно 10 строках (включая скобки и объявление) простого, без всяких наворотов, кода ??? Что вызвало такое "непонимание"? :) Лень во что-то вникнуть, лень посчитать даже на один ход вперед, вообще все лень. Так приходит старость..Название: Re: Ускорить Отправлено: Igors от Апрель 28, 2021, 13:48 Случай досадный, бывают такие. Неск строк совершенно дубового кода делают все что нужно, правда ценой производительности. Но как сделать без перебора - не вижу. Выдавил из себя такое
- в каждый эл-т mData вписать его индекс и при поиске просматривать вверх от этого индекса. Ну это будет работать пока нет удалений/вставок в mData между поисками. И сейчас их действительно нет, но увы - нет и никаких гарантий что они не понадобятся :'(. Да и ускорение сомнительно, напр на старте все mChannel нулевые, и придется какое-то время побегать по mData пока они не заполнятся. Самое время заводить говнокодерскую песню о "преждевременной оптимизации", ну или там про "область применения" и.т.п. Но мы же не такие, правда? :) |