Три, код C Низкая эффективность? - PullRequest
1 голос
/ 26 июля 2011

Я видел, как некоторые люди используют эту структуру для узлов Trie:

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

Это низкая эффективность, так как нам не всегда нужна длина TREE_WIDTH для каждого массива.

Или я что-то недопонимаю?

1 Ответ

4 голосов
/ 26 июля 2011

Это компромисс между процессором и памятью.Распределяя его заранее, вы используете определенный минимальный объем памяти для хранения этих указателей (TREE_WIDTH * sizeof (struct trie_node_st *)) байтов, позже вы используете меньше ЦП, потому что это делается во время компиляции (если вы не выделите структуру с помощью malloc ()).Однако это вряд ли накладные расходы.Даже если у вас есть тонна указателей, это не имеет значения.Вероятное дизайнерское решение состояло просто в том, что программист не чувствовал необходимости динамически выделять массив указателей для структуры trie_node_st каждый раз, когда он использовал эту структуру.

...