Главная страница
    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.03 c
14-1089979887
pavel_pavel
2004-07-16 16:11
2004.08.08
Средний рост программиста


14-1089978128
pavel_pavel
2004-07-16 15:42
2004.08.08
Часто ли пьют программисты?


1-1090488913
Morg
2004-07-22 13:35
2004.08.08
Увеличение скорости поиска в TStringList


8-1085230558
ricks
2004-05-22 16:55
2004.08.08
Формат файла WMA (или ASF)


14-1090669139
GoD
2004-07-24 15:38
2004.08.08
Чем Unix лучше Windows?





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