Текущий архив: 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