小编use*_*377的帖子

优化阵列合并操作

鉴于,我将不胜感激任何帮助.

我有7个单独的阵列与约.每个数组中有90,000个数字(我们称之为arrays1-arrays7).每个数组本身都没有重复的数字.但是,阵列之间可能存在重复.例如,array2没有重复项,但可以使用与arrays3和arrays4相同的数字.

问题:一旦所有7个阵列合并,我试图识别所有重复3次的数字.

我必须进行1000次计算,需要15分钟,但这不行,因为我必须运行40次 - 代码:

如果您知道另一种最适合此类计算的语言,请告诉我.任何扩展建议,如redis或gearman都有帮助.

for($kj=1; $kj<=1000; $kj++)
    {
$result=array_merge($files_array1,$files_array2,$files_array3,$files_array4,$files_array5,$files_array6,$files_array7);

$result=array_count_values($result);

$fp_lines = fopen("equalTo3.txt", "w");

foreach($result as $key => $val)
{
    if($result[$key]==3)
    {
    fwrite($fp_lines, $key."\r\n");
    }
}
fclose($fp_lines);
}
Run Code Online (Sandbox Code Playgroud)

我也用字符串尝试了下面的代码,但是array_map调用和array_count值调用需要17分钟:

for($kj=1; $kj<=1000; $kj++)
    {

$result='';

for ($ii = 0; $ii< 7; $ii++) {
    $result .= $files_array[$hello_won[$ii]].'\r\n';
}

$result2=explode("\n",$result);//5mins
$result2=array_map("trim",$result2);//11mins
$result2=array_count_values($result2);//4-6mins

$fp_lines = fopen("equalTo3.txt", "w");

foreach($result2 as $key => $val)
{

    if($result2[$key]==3)
    {
    fwrite($fp_lines, $key."\r\n");
    }
}
fclose($fp_lines);

unset($result2);
Run Code Online (Sandbox Code Playgroud)

////////////////////////////////////////////////// /

@ziumin @ailvenge @scunliffe @ this.lau_ @monocell感谢所有发帖的人!我正在处理你的所有建议,并在我完成所有答案后明天接受答案.非常感谢!

php arrays optimization performance

4
推荐指数
1
解决办法
8544
查看次数

标签 统计

arrays ×1

optimization ×1

performance ×1

php ×1