Skip to content

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

Imangazaliev edited this page Mar 25, 2016 · 1 revision

Парсеры

Особенности

DiDom

  • Возможность поиска в элементе

DomCrawler

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

Simple HTML DOM

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

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

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

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

Всего нужно обработать три файла:

  1. 100 элементов ~ 1000 строк ~ 60 kb
  2. 1000 элементов ~ 10000 строк ~ 600 kb
  3. 5000 элементов ~ 50000 строк ~ 3000 kb

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

require 'vendor/autoload.php';

$filepath = __DIR__.'/../files/'.$argv[1].'.html';
$html = file_get_contents($filepath);

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

// код парсинга

$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);

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

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

100 элементов
  • Nokogiri - 125152
  • DiDom - 177024
  • Zend Dom - 217120
  • DomCrawler - 663632
  • Simple HTML DOM - 3093680
1000 элементов
  • Nokogiri - 1033264
  • DiDom - 1671312
  • Zend Dom - 1674328
  • DomCrawler - 1823800
  • Simple HTML DOM - 28418904
5000 элементов
  • Nokogiri - 4798024
  • DiDom - 7662488
  • Zend Dom - 7880344
  • DomCrawler - 9372056
  • Simple HTML DOM - Нехватка памяти

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

100 элементов
  • DiDom - 0.016069
  • Nokogiri - 0.019341
  • DomCrawler - 0.032912
  • Zend Dom - 0.213485
  • Simple HTML DOM - 0.415827
1000 элементов
  • DiDom - 0.2003519
  • Nokogiri - 0.2230408
  • DomCrawler - 0.2524929
  • Simple HTML DOM - 1.518197
  • Zend Dom - 5.382406
5000 элементов
  • DiDom - 3.876836
  • Nokogiri - 4.875494
  • DomCrawler - 11.90424
  • Zend Dom - 179.160342
  • Simple HTML DOM - Нехватка памяти