我有一个大小约为 5.8 MB的“单词”文件,其中包含 560,000 个单词。我正在使用它从连接在一起的字符串中获取真实的单词。
例如greenbananatruck可能是这样的字符串。
我编写了这个函数,以便以非常快的速度使用。但我不能让它比0.5 sec更快。我正在使用具有 8 核处理器、8GB RAM 的服务器。实际上cpu不是问题,问题是RAM。我需要能够在多个实例中快速有效地完成这个过程。
public function wordSplitReal( $str ){
$words = array_filter( $this->dict, function($word) use(&$str) {
$pos = strpos( $str, $word );
if ( $pos !== false ){
$str = substr_replace($str, "", $pos, strlen($word));
return true;
}
return false;
} );
return $words;
}
这很简单,我实际上正在做的是将数组“dict” “过滤”为仅给定字符串中的单词。(我对多个单词不感兴趣。) Dict 从最长到最短的单词进行预排序。全部只有小写字母。这个函数是使用单例的更大类的一部分。
任何帮助,将不胜感激。