开发者

Trie, C code. Low efficiency?

I saw some people use this structure for Trie nodes:

struct trie_node_st {
        int count;
        struct trie_node_st *next[TREE_WIDTH];
};

Is is low efficiency, sinc开发者_如何学编程e we don't always need TREE_WIDTH as length for each array.

Or am I misunderstanding something?


It's a CPU/memory trade off. By allocating it up front you use a certain minimum amount of memory to store those pointers (TREE_WIDTH * sizeof (struct trie_node_st *)) bytes, you use less CPU later because this is done at compile time (unless you allocate the struct with malloc()). However, this is hardly an overhead. Even if you had a ton of pointers, it wouldn't matter. The likely design decision was just that the programmer did not feel like having to dynamically allocate an array of pointers to struct trie_node_st each time he used this structure.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜