Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.08;
Скачать: CL | DM;

Вниз

Увеличение скорости поиска в 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.05 c
1-1090455329
R
2004-07-22 04:15
2004.08.08
FileExists


4-1088251501
pantel
2004-06-26 16:05
2004.08.08
Как использовать DDE?


1-1090534167
Victor!
2004-07-23 02:09
2004.08.08
TXMLDocument не понимает по русски


1-1090756981
V l a d i m i r
2004-07-25 16:03
2004.08.08
Окна в стиле MS Word


1-1090931350
dron
2004-07-27 16:29
2004.08.08
Спецы трединга помогите