В сценарии, когда большое количество строк необходимо проанализировать с помощью регулярных выражений, учитывая, что для всех тестов будет использоваться одна и та же игла RegEx, это будет быстрее:
[*]Чтобы протестировать каждую строку в массиве по отдельности или;
[*]Объединить все в одну большую строку и протестировать только один раз?
Я считал, что лучше использовать номер 2, вместо того, чтобы многократно запускать механизм RegEx для обработки массива строк. Однако после некоторого тестирования на PHP (PCRE) это показалось неверным.
Бенчмарк
Я сделал простой тест в PHP 5.3 (исходный код) и получил следующие результаты:
122185 взаимодействий за 5 секунд при тестировании нескольких строк меньшего размера. внутри массива
26853 взаимодействий за 5 секунд при выполнении одного теста большой строки
Поэтому я должен сделать вывод, что первый метод работает до 5 раз быстрее. Однако я хотел бы попросить авторитетного ответа, подтверждающего это; Я мог бы сделать ошибочные предположения из-за некоторой оптимизации PHP, о которой я не знаю.
Всегда ли более оптимизированное решение фрагментировать большие строки перед их тестированием с помощью регулярных выражений, а не специально в PCRE? ?
preg_grep()
Я не думаю, что эту функцию здесь следует рассматривать. Это тест производительности, а не вопрос оптимизации. Не говоря уже о том, что функция — это метод, специфичный для PHP. Кроме того, preg_match_all возвращает все совпавшие подстроки, тогда как preg_grep просто указывает, какие элементы массива совпали.
Подробнее здесь: https://stackoverflow.com/questions/140 ... -is-faster
Разобрать множество маленьких строк или одну большую строку — что быстрее? ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
TCP-сокеты C# для передачи файлов: множество маленьких сокетов против одного большого сокета
Anonymous » » в форуме C# - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
TCP-сокет C# для передачи файлов – множество маленьких пакетов против одного большого пакета
Anonymous » » в форуме C# - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-