我有一個很大的TXT(ipaddress.txt)有很多線的搜索字符串,每一行是一個IP地址,例如:德爾福:在TStringList中
44.XXX.XXX.XXX
45.XXX.XXX.XXX
46.XXX.XXX.XXX
47.XXX.XXX.XXX
48.XXX.XXX.XXX
我在TStringList
加載這個名單如:
FIpAddressList := TStringList.Create();
FIpAddressList.Sorted := true;
FIpAddressList.LoadFromFile('ipaddress.txt');
,我想檢查一個IP地址在列表中,如:
function IsIPinList(const IPAddress : string): Boolean;
begin
Result := (FIpAddressList.IndexOf(IPAddress) <> -1);
end;
它的作品...但與擁抱慢e TStringList
。
有什麼辦法讓這個過程更快?
UPDATE
- 列表是靜態的,其中每月更新,以較少或更多5'000線。
- 該函數在服務器上的每個請求上被調用(例如,每秒5次)。
該列表僅在服務器服務啓動時加載。使這個快速
有許多方法可以完成你想要的功能:通過數據庫,二叉樹,散列表等等。它取決於你的列表有多大,如果它發生變化,你的應用程序和環境的限制。 – RBA
你可以使用 - 例如 - http://www.soft-gems.net/index.php/controls/virtual-treeview這是非常快的。 – RBA
嘗試排序並嘗試二進制搜索算法後 – am2