Форум вопросов и ответов

Форум вопросов и ответов (https://www.otvetnemail.ru/)
-   Продолжение старого архива (https://www.otvetnemail.ru/prodolzhenie-starogo-arhiva-804/)
-   -   Ускорить поиск в списке (https://www.otvetnemail.ru/prodolzhenie-starogo-arhiva-804/uskorit-poisk-v-spiske-364765/)

Guest 01.10.2011 02:57

Ускорить поиск в списке
 
Добрый вечерПеределываю/обновляю код написанный очень давно (и не мной) на С (практически). Программист использовал список, для простоты КодC++ (Qt)struct CObject {long mID; // идентификатор CObject * mPrev; // предыдущий в списке CObject * mNext; // следующий в списке ..};Конечно то же самое с std::list - не сутьПрофайлер показывает что тормозит на таком участкеКодC++ (Qt)..CObject * theHead = ... // знаем голову спискаCObject * data1 = Lookup(theHead, ID_1); // нашли в списке элемент с ID_1... // используем данные data1 ...CObject * data10 = Lookup(theHead, ID_10); // нашли в списке элемент с ID_10... // используем данные data10 Lookup просматривает элементы начиная с theHead, пока не найдет с нужным ID. Откуда тормоза понятно. Легко сказать "возьми что-то другое вместо списка" - но во-первых это совсем непросто (код велик), а главное - здесь список прекрасно себя оправдывает во многих др. местах (удаления, перелинковки и.т.п) "Глубина поиска" не превышает 500 (хотя весь список может быть намного больше).Как бы мне здесь "ускориться" ?Спасибо


Часовой пояс GMT, время: 06:26.


© www.otvetnemail.ru - Форум вопросов и ответов.