Главная страница
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.026 c
3-1089880727
Алексей
2004-07-15 12:38
2004.08.08
Смерть ADO. Как восстановить?


3-1089860328
Ozone
2004-07-15 06:58
2004.08.08
Непонятки с запросом


8-1085061971
Nic2
2004-05-20 18:06
2004.08.08
JPG ---> GIF


3-1089794019
CAMCOH
2004-07-14 12:33
2004.08.08
Реакция программы на ошибку соединения


3-1089804063
Dem2
2004-07-14 15:21
2004.08.08
Даты в SQL