【发布时间】:2017-06-26 15:19:56
【问题描述】:
我有一个巨大的复杂数据结构 (TRIE),需要存储以供以后使用。
所以,我正在使用序列化/反序列化(如果有的话,请提出更好的方法):
$fp = fopen("serialized_trie.txt","w+");
fwrite($fp,serialize($root));
fclose($fp);
$root = unserialize(file_get_contents("serialized_trie.txt"));
trie 本身由 100 万个单词组成。所以这是一个很大的尝试。
我需要以某种方式存储这个 trie。将如此大的尝试写入文件需要大量时间。而 unserialize 中的 file_get_contents 会导致整个文件加载到内存中。
我需要使用二进制文件而不是 txt 文件吗?怎么样?
我还阅读了 3 种存储技术: 连载, json_encode, var_export
在这种情况下我需要使用 json_encode 或 var_export 方法吗?
如何快速存储和检索 trie?
【问题讨论】:
-
我回答了你的最后一个问题,你没有留下任何反馈或 cmets。
-
@gview 刚刚做了:)
-
Serialize 获取变量并将其转换为中间形式。如果您查看服务器上的文件,您会发现不难理解表格。您可以尝试压缩文件以减小其大小,但在每个请求上执行此操作仍然需要大量时间/成本。我在另一个问题中为您提供了内存缓存的标准方法,但您显然出于某种未知原因拒绝了这些方法。有时,现实要求您必须增加复杂性才能实现性能目标。