访问静态分配的数组VS通过指向静态分配的数组的指针访问

时间:2011-11-12 21:30:34

标签: c++ arrays string-literals

我需要在一个数组中存储字符串的数量(它们将保持不变并且不会被修改),并且多次访问它们,我们希望尽可能快地实现查找。以下哪项将提供更快的访问权限:

方法1:

const char* string_literal[] = {"Test1","Dummy","Dummy","Test2","Test3","Dummy"}; //       storing as string literals
... ... ... ...
... ... ... ...
const char* string_literal1000[]= {"Beta1","Beta2","Beta3"};

方法2:

const char test1ptr[] = "Test1",
const char test2ptr[] = "Test2",
const char test3ptr[] = "Test3",
const char dummyptr[] = "Dummy",


const char* string_ptr1 [] = {test1ptr,dummyptr,dummyptr,test2ptr,test3ptr,dummyptr}; // storing as pointers
... ... ...
const char* string_ptr1000[] = {"Beta1","Beta2","Beta3"};

或者;是方法1和方法2会产生相同的表现吗?

注意:

  1. 我将有大约1000条记录(例如string_ptr1,sting_ptr2等或string_literal1,string_literl2等)平均分配20个字符串(例如“test1”,test2“等..
  2. “Dummy”只会显示少量记录。

1 个答案:

答案 0 :(得分:1)

string_literal1000无法编译。

简单回答:说同样的表现(因为分配模式是相同的)。

然而,您希望我们比较速度,而您甚至没有显示您的使用模式,这很有趣。

现在说了一遍,我可以想象你可以通过以下模式进行优化的情况:IFF你知道最大条目的长度(它们看起来相当小),你可以通过将整个表格打包成一个来优化整个表格。单个字符[],包含对齐并以很多字节填充的单个字符串(例如,对于OP中显示的字符串,为16或32)。

如果没有关于实际代码方案的进一步信息,推荐这样的方法(IMO)是错误的。

相关问题