读书人

大伙来谈谈数据类型转换的效率

发布时间: 2013-01-02 13:08:44 作者: rapoo

大家来谈谈数据类型转换的效率
我随机生成N个0-65535的整数 转换成Strling
用TStringList载入
然后我要遍历
这个列表是否存在某个数
需要将需要查找的列表中的某个位置的值再转换成整数型
这样就要历经一次
INTTOSTR
和一次
STRTOINT
这样的话。会不会造成很大的效率损失
如果用TintegerList呢
但是好像没有TintegerList这个类!
[解决办法]
如果你对效率非常看重,请使用数组或申请数据块自定义类型及方法.
越是简单粗暴,效果越好;
反而很多看上去似乎技术含量很高的,中看不中用.
[解决办法]

引用:
引用:检查某个东东是否存在没有比哈希表更快地了.
老版本D的Inifiles但愿有个哈希表实现.新版D则自带了字典类,也就是哈希表
我只是一串数字列表而已。。没必要再高哈希表了吧......


TDictionary是现成的东西,比你用tstringlist还方便,
[解决办法]
0..65535的话开一个布尔数组最快。少量任意整数可以用list。大量任意整数那就老老实实hash吧。
[解决办法]
引用:
0..65535的话开一个布尔数组最快。少量任意整数可以用list。大量任意整数那就老老实实hash吧。


支持,对这种0-$FFFF存在与否的查询,用Boolean数组是最快的,生成随机数的时候,把对应的位置设置成True,查询的时候只需要检查对应的值是否是True就知道是否有了
bList : array [0..$FFFF] of Boolean;
//初始化的时候
FillChar(bList,SizeOf(bList) , 0); //初始化
for i:=1 to ... do begin //生成多少个数
n := Random($10000); //确保范围在0-65535之内
bList[n] := True;
end;
查询的时候
Function ExistsValue(wValue : WORD) : Boolean;
begin
Result := bList[wValue];
end;

读书人网 >.NET

热点推荐