Разобрать множество маленьких строк или одну большую строку — что быстрее?Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Разобрать множество маленьких строк или одну большую строку — что быстрее?

Сообщение Anonymous »

В сценарии, когда большое количество строк необходимо проанализировать с помощью регулярных выражений, учитывая, что для всех тестов будет использоваться одна и та же игла 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • TCP-сокеты C# для передачи файлов: множество маленьких сокетов против одного большого сокета
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • TCP-сокет C# для передачи файлов – множество маленьких пакетов против одного большого пакета
    Anonymous » » в форуме C#
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Как быстрее всего сложить 16 маленьких чисел?
    Anonymous » » в форуме C++
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Как быстрее всего сложить 16 маленьких чисел?
    Anonymous » » в форуме C++
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Как быстрее всего сложить 16 маленьких чисел?
    Anonymous » » в форуме C++
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»