Skip to content

Сравнение с другими парсерами (1.6.3)

Imangazaliev edited this page Dec 17, 2018 · 3 revisions

Парсеры

Особенности

DiDom

  • Возможность поиска в элементе
  • Возможность изменения исходного документа

DomCrawler

  • Удобная работа с формами

Simple HTML DOM

  • Возможность поиска в элементе
  • Возможность изменения исходного документа

Потребление памяти и скорость выполнения

Условия тестирования:

  1. Все парсеры устанавливаются через менеджер пакетов Composer
  2. Задача парсеров - получить из HTML все элементы по определенному селектору и вывести их текстовое содержимое

Парсить будем заголовки постов Хабра (habr.com). Всего нужно обработать 1000 файлов размером чуть больше 100 kb, общий размер всех файлов составляет приблизительно 130 Mb, все файлы пронумерованы от 0 до 999.

Код для тестирования:

require 'vendor/autoload.php';

$cacheDir = __DIR__.'/../cache';

$startMemory = memory_get_usage();
$startTime = microtime(true); 

for ($i=0; $i < 1000; $i++) { 
    // код парсинга
}

$time = microtime(true) - $startTime;
$memory = memory_get_usage() - $startMemory;

file_put_contents(__DIR__.'/time.txt', $time . PHP_EOL, FILE_APPEND);
file_put_contents(__DIR__.'/memory.txt', $memory . PHP_EOL, FILE_APPEND);
file_put_contents(__DIR__.'/peak.txt', memory_get_peak_usage() . PHP_EOL, FILE_APPEND);

Результаты тестирования

Потребления памяти (в байтах)

Максимальное
  • Nokogiri - 763568
  • DiDom - 793096
  • Zend Dom - 954712
  • DomCrawler - 1534512
  • Simple HTML DOM - 16839400
В конце теста
  • Nokogiri - 157168
  • DiDom - 158896
  • Zend Dom - 329232
  • DomCrawler - 567440
  • Simple HTML DOM - 14113456

Затраченное время (в секундах)

  • DiDom - 27.0787
  • Nokogiri - 27.1009
  • DomCrawler - 36.0982
  • Zend Dom - 48.3222
  • Simple HTML DOM - 188.0247