【发布时间】:2014-10-06 22:49:48
【问题描述】:
我观察到访问 char 数组中的数据项比访问 int 数组中的数据项花费的时间要少得多。我猜这是因为整数的大小大于字符的大小,因此“内存控制器”(在 C 中控制内存的东西-我不知道技术术语)必须移动更大的距离。
uint8_t char 和 int8_t 具有相同的大小。那么将数据存储在哪种数据类型的数组中会提供最快的访问时间。?
我创建了一个程序,将 150000 个单词存储在一个大小为 250000 个桶的哈希表中。当哈希表数组的数据类型为 int 时,加载时间为 0.16 秒,但当数据类型为 char 或 uint8 或 int8 时,加载时间在 0.08 到 0.11 秒之间变化。所以我的测试没有结果
【问题讨论】:
-
能给我们一些代码和测试结果吗?
-
你应该知道
int8_t和uint8_t通常分别从signed char和unsigned char派生而来。现在再考虑一下访问时间是否可能不同。 -
为什么不写一个测试
-
这完全依赖于平台。通常,查找
char数组涉及读取64/128 位并从中选择指定的char。使用缓存,这可能会一次获取 32 个字节。索引int数组时也会发生同样的情况。 -
给我们具体的证据证明访问
char比int更快。
标签: c