读书人

小弟我的程序里有几千个char*类型的字

发布时间: 2012-04-23 13:17:38 作者: rapoo

我的程序里有几千个char*类型的字符串,每秒钟要对其查找两千次左右,请问如何高效处理
我的程序里有几千个char*类型的字符串,每秒钟要对其查找两千次左右,我用过TStringList排序然后查找,觉得效率较低,而且还要做一次转换。大家有什么好的方法不,谢谢。

[解决办法]
建议使用STL的voctor、list、map,把你的字符串全部存放到里面,泛型算法中查找速度非常快
[解决办法]
在足分散的情下。千字符串(按3K算),每秒钟要对其查找两千次左右。也就是每次要在0.5ms找出果,在最差情下:3K*2K = 6M 即每秒6百次字符比算。
先一下:
最差情下,最差算法下所要的:
unsigned long start = GetTickCount() ;
AnsiString str1 = "abcdefghijklmn " ;
AnsiString str2 = "abcdefghijklmnopq " ;
char *p = str1.c_str() ;
for(int i = 0 ; i < 3000*2000 ; ++i)
{
if(strcmp(p, "abcdefghijklmnopq ") == 0 )
p = str1.c_str() ;
else
p = str2.c_str() ;

}
一下: (end - start) == 297
也能足要求了。

所以,在我的上AMDX2 3600+
查找上,用遍做,就能足3K字符串,每秒查找2K次了。(除非每字符串都超)
一std::map做,就更快了
建立存,想法提高存命中率。
每秒钟要对其查找两千次左右。一般都有大量的重搜索,保存前十次搜索果(或搜索率高的果),能有效地系。

读书人网 >C++ Builder

热点推荐