A
Adnil
Unregistered / Unconfirmed
GUEST, unregistred user!
const
MAXITEM = 1000;
NAMES: array[0..MAXITEM] of string = ('dffff','sssdffff'......);
VALUES: array[0..MAXITEM] of string = ('dffff1','sssdffff1'......);
现已有一sName变量,需要匹配每个Name得到对应的Value
通常这样做
for i := 0 to MAXITEM do
if sName = Names then
begin
result := values;
break;
end;
我发现这样效率比较低,如果把NAMES的定义改成
NAMES = 'dffff,sssdffff....' //每个item用逗号分隔
然后使用Pos(sName + ',', NAMES)可提高1/3左右的搜索效率,但接下来取得对应的
Value则成了一个问题。
请算法高手指点一二,尽可能增加运行速度,减少内存占用(虽然这两者是矛盾的)。
MAXITEM = 1000;
NAMES: array[0..MAXITEM] of string = ('dffff','sssdffff'......);
VALUES: array[0..MAXITEM] of string = ('dffff1','sssdffff1'......);
现已有一sName变量,需要匹配每个Name得到对应的Value
通常这样做
for i := 0 to MAXITEM do
if sName = Names then
begin
result := values;
break;
end;
我发现这样效率比较低,如果把NAMES的定义改成
NAMES = 'dffff,sssdffff....' //每个item用逗号分隔
然后使用Pos(sName + ',', NAMES)可提高1/3左右的搜索效率,但接下来取得对应的
Value则成了一个问题。
请算法高手指点一二,尽可能增加运行速度,减少内存占用(虽然这两者是矛盾的)。