我需要在一个数组中存储字符串的数量(它们将保持不变并且不会被修改),并且多次访问它们,我们希望尽可能快地实现查找。以下哪项将提供更快的访问权限:
方法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会产生相同的表现吗?
注意:
答案 0 :(得分:1)
string_literal1000无法编译。
简单回答:说同样的表现(因为分配模式是相同的)。
然而,您希望我们比较速度,而您甚至没有显示您的使用模式,这很有趣。
现在说了一遍,我可以想象你可以通过以下模式进行优化的情况:IFF你知道最大条目的长度(它们看起来相当小),你可以通过将整个表格打包成一个来优化整个表格。单个字符[],包含对齐并以很多字节填充的单个字符串(例如,对于OP中显示的字符串,为16或32)。
如果没有关于实际代码方案的进一步信息,推荐这样的方法(IMO)是错误的。