UPD: я переехал оригинальный вопрос https://codereview.stackexchange.com/questions/127055/building-tree-graph-from-dictionary-performance-issuesPhp реализация префикс дерева по сравнению с массивом ДООС
Вот короткая версия, без кодов.
Я пытаюсь построить дерево префикса из словаря. Итак, используя следующий словарь: 'and','anna','ape','apple'
, граф должен выглядеть так: Я пробовал 2 подхода: используя ассоциативный массив и используя самонаписанные классы дерева/узла.
Примечание: оригинал словаря составляет около 8 МБ и содержит> 600000 слов.
Вопрос: есть ли хороший (быстрый/эффективный) способ сделать это?
я пытался до сих пор:
PHP ассоциативные массивы (они не являются очень гибкими для дальнейшей работы с этим графиком).
самонаписанные классы дерева/узла (проблемы с производительностью - время выполнения увеличивается до 7x, использование памяти возрастает на 2x, даже не реализуя ничего, кроме функции
inserting
).
Примеры коды доступны на Просмотр Кода (самый первый ссылка на вопрос)
Оба они имеют одинаковую сложность кода/выполнения, а не тот же объем памяти и скорость выполнения. В зависимости от версии PHP, которую вы запускаете под классами, используйте более или менее память. Если вы ищете лучшую производительность, а не просто учебный материал, я бы предложил посмотреть на вложенные наборы. Вы также можете использовать PHP-реализации: http://stackoverflow.com/questions/272010/searching-for-the-best-php-nested-sets-class-pear-class-excluded –
Этот вопрос лучше подходит для [обзора кода] (http://codereview.stackexchange.com) – nickb
@Sergiu Paraschiv - я рассмотрю его – haldagan