【发布时间】:2017-06-08 10:08:16
【问题描述】:
我目前正在尝试在 C 中实现一个 trie,以便进行拼写检查(字典取自加载到 trie 结构中的文本文件)。
这是我当前的节点结构(取自https://www.cs.bu.edu/teaching/c/tree/trie/):
typedef struct trieNodeTag
{
char key;
struct trieNodeTag *next, *children;
} trieNodeT;
key 是要加载到内存中的每个单词的字母。
我的问题如下:使用 int 类型作为 key 是否会影响内存/速度? char 是否直接被视为 int ?
谢谢!
【问题讨论】:
-
实现的平台是什么?我猜想对于存储在 trie 中的中等大小的单词,这种差异几乎不会引起注意。
-
在大多数机器上没有区别。指针需要对齐,因此如果是
char,则在key之后有填充,如果是int,则填充较少,可能为零。 -
重新排序并首先使用指针,然后是
key,可能比char/int产生更大的性能差异(将最常用的字段作为第一个字段。)。 IAC,“尝试”不同的方法并对其进行评分, -
回答您的问题的最佳方法是对其进行编码并在对其进行分析时通过迭代运行它。老实说,更改一种数据类型并不难最终测试。
标签: c design-patterns struct trie