2009-6-16 10:33
myplxdm
关于CnHashmap和CnHashTable性能问题?
我用TCnStrToPtrHashMap和TCnHashTableBig测试了一下,代码如下:
var
time,i:Cardinal;
hash:TCnStrToPtrHashMap;
begin
hash := TCnStrToPtrHashMap.Create();
time := GetTickCount;
for i := 0 to 9000000 do
begin
hash.Add(IntToStr(i),TObject(i));
end;
btn1.Caption := IntToStr(GetTickCount - time);
var
time,i:Cardinal;
hash:TCnHashTableBig;
begin
hash := TCnHashTableBig.Create(9000000 ); //如果我这个初始化9000000 就提示内存超出,小一点的数值是可以,不过好像最大就1百多万
time := GetTickCount;
for i := 0 to 9000000 do
begin
hash.put(IntToStr(i),TObject(i));
end;
btn1.Caption := IntToStr(GetTickCount - time);
以上的性能很差,不知道是不是我测试有问题,我用THashedStringList创建9000000 要70XX毫秒左右,但用上面的两个过了很久(20秒左右)都还没有执行完成,所以我中断了运行