UPD: przeniosłem oryginalne pytanie https://codereview.stackexchange.com/questions/127055/building-tree-graph-from-dictionary-performance-issuesPHP implementacja drzewa prefiks kontra tablicy doc
Oto krótka wersja, bez kodów.
Próbuję zbudować drzewo prefiksu ze słownika. Tak więc, używając następującego słownika 'and','anna','ape','apple'
, wykres powinien wyglądać tak: Próbowałem 2 podejścia: za pomocą tablic asocjacyjnych i przy użyciu samodzielnie napisanych klas drzewa/węzła.
Uwaga: oryginalny słownik ma około 8 MB i zawiera> 600 000 słów.
Pytanie: Czy jest jakiś dobry (szybki/wydajny) sposób to zrobić?
próbowałem dotąd:
tablice asocjacyjne php (nie są one bardzo elastyczne dla przyszłej pracy z tym wykresie).
samodzielnie napisane klasy drzewa/węzła (problemy z wydajnością - czas wykonania wzrasta nawet o 7x, zużycie pamięci wzrasta dwukrotnie, nawet bez implementacji czegokolwiek oprócz funkcji
inserting
).
Przykładowe kody są dostępne na inspekcja kodu (bardzo pierwszy link w pytaniu)
Oba mają ten sam złożony kod/wykonanie, a nie taki sam rozmiar pamięci i szybkość wykonania. W zależności od wersji PHP, którą uruchamiasz w ramach klas, korzystaj również z mniejszej lub większej ilości pamięci. Jeśli szukasz lepszej wydajności, a nie tylko uczenia się rzeczy, sugerowałbym zaglądanie do zagnieżdżonych zestawów. Znajdziesz także gotowe do użycia implementacje PHP: http://stackoverflow.com/questions/272010/searching-the-best-php-nested-sets-class-pear-class-excluded –
To pytanie jest lepiej dopasowane dla [recenzji kodu] (http://codereview.stackexchange.com) – nickb
@Sergiu Paraschiv - Zajrzę do tego – haldagan