【发布时间】:2016-04-29 12:42:25
【问题描述】:
UPD:我将原始问题移至https://codereview.stackexchange.com/questions/127055/building-tree-graph-from-dictionary-performance-issues
这是一个简短的版本,没有代码。
我正在尝试从字典构建前缀树。因此,使用以下字典 'and','anna','ape','apple',图形应如下所示:
我尝试了两种方法:使用关联数组和使用自写的树/节点类。
注意:原始字典大约 8 MB,包含 >600000 个单词。
问题:有什么好的(快速/高效)方法吗?
到目前为止我已经尝试过:
php 关联数组(它们对于以后使用此图的工作不是很灵活)。
自写的树/节点类(性能问题 - 执行时间最多增加 7 倍,内存使用量增加 2 倍,即使除了
inserting函数之外没有实现任何东西)。
codereview 上提供了示例代码(有问题的第一个链接)
【问题讨论】:
-
它们都具有相同的代码/执行复杂性,不同的内存占用和执行速度。根据您在类下运行的 PHP 版本,也会使用或多或少的内存。如果您正在寻找更好的性能而不仅仅是学习东西,我建议您研究嵌套集。您也可以使用 PHP 实现:stackoverflow.com/questions/272010/…
-
这个问题更适合code review
-
@Sergiu Paraschiv - 我会调查一下
-
@nickb 我实际上并没有要求审查我的代码,我基本上是在问“为什么类上的树实现比数组上的实现慢得多?”。给出代码来说明问题。我实际上期待着接近 2 倍的速度下降。 8x+ 让我震惊。
-
确定是 - 绩效评估仍然是评估。请参阅tour of code review - “询问...关于以下方面的工作代码的质量:性能”。
标签: php arrays class graph trie