Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];

Вниз

Увеличение скорости поиска в TStringList   Найти похожие ветки 

 
Morg   (2004-07-22 13:35) [0]

Вот такие вот методы поиска и сохранения инфы в TStringList ОЧЕНЬ медленно работают. Не могли бы мастера подсказать более рациональный способ расхода процессорного времени?


function TDispatchThread.GetDNSCacheRecord(domain: string): string;
begin
  EnterCriticalSection(Fcs);
  try
    with MainForm.FDnsCache do begin
       Result := Values[domain];
    end;
  finally
     LeaveCriticalSection(Fcs);
  end;
end;

procedure TDispatchThread.SaveDNSCacheRecord(domain, mailserv: string);
begin
  EnterCriticalSection(Fcs);
  try
    with MainForm.FDnsCache do begin
       if IndexOf(domain+"="+mailserv) = -1 then
          Add(domain+"="+mailserv);
    end;
  finally
     LeaveCriticalSection(Fcs);
  end;
end;


 
default ©   (2004-07-22 13:37) [1]

сделай список строк сортируемым тогда поиск будет происходить делением пополам


 
Morg   (2004-07-22 13:43) [2]

Ok. Щас попробую, но думаю сильного выйгрыша в скорости не будет. А если первую часть - в строку, а вторую - в объект? Типа AddObject(). В качестве объекта - указатель на строку. Так бысрее будет?


 
Рамиль ©   (2004-07-22 13:51) [3]

Будет, только используй Find, а не IndexOf


 
default ©   (2004-07-22 13:54) [4]

Рамиль ©   (22.07.04 13:51) [3]
"function TStringList.IndexOf(const S: string): Integer;
begin
 if not Sorted then Result := inherited IndexOf(S) else
   if not Find(S, Result) then Result := -1;
end;"


 
Думкин ©   (2004-07-22 13:55) [5]


> [2] Morg   (22.07.04 13:43)
> Ok. Щас попробую, но думаю сильного выйгрыша в скорости
> не будет.


1. Будет. В первом случае поиск O(n) а во втором O(log2(n)).
2. Если очень хочется, то можно хешировать.

Только операция Add - будет работать медленнее. И вообще можно делать не так если боитесь дубликатов.


 
Morg   (2004-07-22 14:01) [6]

2 Думкин

Ну подскажи плиз как ты считаешь лучше это дело замутить...


 
Думкин ©   (2004-07-22 14:03) [7]

> [6] Morg   (22.07.04 14:01)

1. Тебе сказали
2. Duplicates property (TStringList)


 
Morg   (2004-07-22 14:06) [8]

2 Думкин

Блин.. ТОЧНО!!! Сенкс тебе!


 
Morg   (2004-07-22 14:36) [9]

2 Думкин ©  

> 2. Если очень хочется, то можно хешировать

расскажи плз что это есть такое и как сие осуществить плз :)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.045 c
1-1090838969
Фагот
2004-07-26 14:49
2004.08.08
Планировщик


3-1089793167
a123
2004-07-14 12:19
2004.08.08
Обработка исключительных ситуаций


9-1082632043
CraKer
2004-04-22 15:07
2004.08.08
GLscene colisions


8-1084714750
killer
2004-05-16 17:39
2004.08.08
как mod перевести в mp3 ?


14-1090308824
Baron
2004-07-20 11:33
2004.08.08
Возрастные категории.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский