Привожу существующий код ниже. Подскажите, пожалуйста, где можно оптимизировать код скрипта, чтобы он работал хотя бы раза в 4-5 быстрее.
У скрипта банальное предназначение: разбить текст страницы на отдельные слова и получить их частоту вхождения на странице.
$start = microtime(true); // ДЛЯ ЗАМЕРА ВРЕМЕНИ ВЫПОЛНЕНИЯ СКРИПТА
$text = file_get_contents('https://ilibrary.ru/text/107/p.9/index.html');
//$text = clear_html($html); Очищаем html от javascript, css и других подобных вставок, которые не нужно учитывать в тексте при разбивки на слова
//echo $text."<hr>";;
$text=str_replace("<"," <",$text); //Добавляем пробел перед и после каждого тега
$text=str_replace(">","> ",$text);
$text=strip_tags($text);
//echo $text."<hr>";;
$text=mb_strtolower($text, 'UTF-8');
//echo $text."<hr>";
$text = preg_replace('/ё/u', 'е', $text);
//echo $text."<hr>";
$sum = 0;
$text_page = array();
$word_arr = preg_split("/[^a-zа-я-]+/mu", $text);
//$word_arr = mb_split("[^a-zа-я-]+", $text);
//var_dump($word_arr);
foreach($word_arr as $w)
{
if(strlen(trim($w)) == 0) continue;
//$w = mb_strtolower($w,"UTF-8");
if(!isset($text_page[$w])) $text_page[$w] = 0;
$text_page[$w]++;
$sum += 1;
//if(is_array($arr_sort_all))
if(isset($arr_sort_all))
{if(!isset($arr_sort_all[$w])) $arr_sort_all[$w] = 1; else $arr_sort_all[$w]++;
}
/*
if(isset($all_slovoforms))
{if(!isset($all_slovoforms[$w])) $all_slovoforms[$w] = 1; else $all_slovoforms[$w]++;
}*/
}
if($sum > 0) foreach($text_page as $w=>&$c){ $text_page[$w] = round(100*$c/$sum,3);}
print_r($text_page);
//Слова и их частота в тексте в массиве $text_page