Я провел несколько тестов скорости, как предложено Крис . По сравнению с его кодом я:
- добавлен str_replace для сравнения:
$str_replace_array = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.');
function tst($pat, $str) {
global $str_replace_array;
$start = microtime(true);
if($pat == '')
str_replace($str_replace_array, '', $str);
else
preg_replace($pat, '', $str);
return microtime(true) - $start;
}
- сделал все строки одинаковой длины, чтобы результаты можно было сравнить лучше
Результаты в:
letters
rep 0.00298
norep 0.06953
str_replace 0.00406
numbers
rep 0.02867
norep 0.02612
str_replace 0.01242
mostly_letters
rep 0.00931
norep 0.06649
str_replace 0.00593
mostly_numbers
rep 0.03285
norep 0.02942
str_replace 0.01359
Это показывает, что повторяющееся регулярное выражение (с добавленным +
) намного быстрее при замене больших блоков (меньше обработки памяти?), Но никакое повторяющееся регулярное выражение не является немного более быстрым, когда не требуется много замены.
Кроме того, str_replace в основном всегда на быстрее (в два раза быстрее), чем замена регулярного выражения, за исключением случаев, когда регулярное выражение соответствует всей строке.