Главная страница
    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.46 MB
Время: 0.037 c
1-1090922659
FS-DOS
2004-07-27 14:04
2004.08.08
rave


14-1089947765
Думкин
2004-07-16 07:16
2004.08.08
Пятничные задачки (прошу не судить строго)


1-1089959211
lexus3d
2004-07-16 10:26
2004.08.08
Список вложеных дерикторий


14-1090461164
Soft
2004-07-22 05:52
2004.08.08
Паранойя


1-1090490311
fylhtq
2004-07-22 13:58
2004.08.08
Build Project с библиотеками внутри





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский