Затраты времени на конвертацию символов из кириллицы в латиницу в разных версиях PHP

Интереса ради решили на скорую руку проверить, как отличается скорость работы в разных версиях PHP при работе с конвертацией символов.

Решено было измерить затраты при следующих подходах:

  1. transliterator_transliterate
  2. сравнение каждого символа с каждым из словаря (двойной foreach)
  3. str_replace посимвольный обход алфавита (внутри одного foreach)
  4. preg_replace посимвольный обход алфавита (внутри одного foreach)

Версии PHP: 5.4, 5.6, 7.0, 7.4, 8.1

В качестве подопытного выступал 1-й том «Война и мир» или 736К знаков.

Проводилось по 5 замеров на каждый подход. Результаты - среднее арифметическое. В секундах.

Результаты на картинке:

Затраты времени на конвертацию символов из кириллицы в латиницу в разных версиях PHP

Разница заметна только при переходе с версии 5+ на 7+, в остальных ситуациях все в пределах погрешности.

Замена по регулярке была простой: preg_replace("/$s1/iu", $s2, $subj), где $s - искомый символ из алфавита, а $s2 - заменяемый из алфавита. Сам же алфавит был такого плана: [$s2] => $s1.

33 показа
5656 открытий
Начать дискуссию