Джуди Массив - Judy array

Дуглас Баскинс и его сестра Джуди

В Информатика, а Джуди Массив это структура данных реализация типа ассоциативный массив с высокой производительностью и низким использованием памяти.[1] В отличие от большинства других хранилища ключей и значений Массивы Judy не используют хеширование, используют сжатие своих ключей (которые могут быть целыми числами или строками) и могут эффективно представлять разреженные данные, то есть они могут иметь большие диапазоны неназначенных индексов без значительного увеличения использования памяти или времени обработки. Они разработаны, чтобы оставаться эффективными даже в конструкциях с размерами в диапазоне петаэлементов, с масштабированием производительности порядка O (log п).[2] Грубо говоря, массивы Judy сильно оптимизированы 256-арным радиксные деревья.[3]

Деревья Джуди обычно быстрее, чем Деревья АВЛ, B-деревья, хеш-таблицы и пропустить списки потому что они оптимизированы для максимального использования Кэш процессора. Кроме того, они не требуют балансировки дерева и алгоритма хеширования.[4]

Массив Джуди был изобретен Дугласом Баскинсом и назван в честь его сестры.[5]

Преимущества

Выделение памяти

Массивы Джуди динамичный и может увеличиваться или уменьшаться по мере добавления элементов в массив или удаления из него. Память, используемая массивами Judy, почти пропорциональна количеству элементов в массиве Judy.

Скорость

Массивы Judy призваны минимизировать количество дорогостоящих тайник заполняется из баран, поэтому алгоритм содержит много сложной логики, чтобы как можно чаще избегать промахов в кэше. Благодаря этим тайник оптимизации, массивы Judy работают быстро, особенно для очень больших наборов данных. На наборах данных, которые являются последовательными или почти последовательными, массивы Judy могут даже превосходить хэш-таблицы, поскольку, в отличие от хеш-таблиц, внутренняя древовидная структура массивов Judy поддерживает порядок ключей.[6]

Недостатки

Массивы Джуди чрезвычайно сложны. Самые маленькие реализации - это тысячи строк кода.[5] Кроме того, массивы Judy оптимизированы для машин с 64-байтовыми строками кэша, что делает их практически непереносимыми без значительной перезаписи.[6] В большинстве приложений возможное преимущество в производительности слишком мало, чтобы оправдать высокую сложность реализации структуры данных.

Смотрите также

Рекомендации

внешняя ссылка