Comments 37
Не совсем понимаю. Неужели не ясно, что PDO всех порвет, так, как это встроенное расширение в PHP, которое в свою очередь, написано на c, чем уже делает отрыв перед всеми другими классами, которые участвуют в тестировании?
PDO здесь только для наглядности, цель - сравнить классы не с ним, а между собой.
Зачем эта наглядность? Кому она нужна? Изначально ясно, что PDO быстрее всех тех, что в примерах. Можете хоть 10 раз минуснуть мое сообщение, но я абсолютно не вижу надобности в примере наличие PDO.
Это не DBAL даже теоретически, по сути библиотека очень похожа на DbSimple, только проще и работает через MySQLi. Не интересно.
А мне кажется интересно - MySQLi в бенчмарках быстрее, а организация goDB позволяет местами сделать ещё рывок вперёд по скорости. =)
Я бы убрал PDO... Если тестируем классы, так и нужно их тестировать между собой
Что-то по ссылке графики сломатые.
Сравнение совершенно бессмысленное. Главное и единственное преимущество PDO над mysqli — несколько более продвинутые prepared statemant'ы. В тесте это никак не учитывается, и лучшую скорость для задач из теста даст именно mysqli.
По остальным классам то же самое. В тесте как-то должна учитываться специфика использования того или иного класса в разных задачах, иначе получается какой-то конкурс красоты.
По остальным классам то же самое. В тесте как-то должна учитываться специфика использования того или иного класса в разных задачах, иначе получается какой-то конкурс красоты.
Вы невнимательны, сравнивался не PDO и MySQLi, а разные классы DBAL. Специфика использования классов: подключаться к базе, выполнять 10-20 запросов с безопасными placeholder-ами, и возвращать результат в форме ассоциативного массива. Поскольку это умеют делать практически все, а жить с одной, был объявлен конкурс красоты ;)
А зачем это нужно? В реальных условиях задачи возлагаемые на классы абстракции гораздо более сложные, ведь иначе они и не нужны были бы. Соответственно, результаты тестов могут быть совершенно другими, более интересными для программиста (а не для председателя жюри конкурса красоты :).
Если задачи более сложные, то программист уже знает, какой класс DBAL будет использовать, потому что только он предоставляет необходимую конфигурацию. Но если под требования программиста подходит несколько классов (не во всех проектах нужен полноценный ORM или диалектонезависимый конатруктор запросов, скажем), то ему интересно узнать, как быстро будет работать библиотека.
Например для того, чтобы программист, вынужденно переходящий с PDO на что-то другое, мог получить приблизительное сранение варинатов, и оценить насколько медленее скорее всего будет работать его приложение.
Про принужденный переход с PDO — попробуйте активно поработать с *LOB'ами Оракла в связке nginx+php-fpm, у меня честно сказать не получилось. Вообще поддержка Оракла в PDO довольно сырая, и об этом пишет и разработчик PDO_OCI и самы Оракловцы в своей php expert zone.
Про принужденный переход с PDO — попробуйте активно поработать с *LOB'ами Оракла в связке nginx+php-fpm, у меня честно сказать не получилось. Вообще поддержка Оракла в PDO довольно сырая, и об этом пишет и разработчик PDO_OCI и самы Оракловцы в своей php expert zone.
Хорошая работа, все на уровне, было интересно.
Хотелось чтоб в тест были включены Doctrine и Propel.
А как же это phpdoctrine не принимал участия? ;(
http://www.phpdoctrine.org/
http://www.phpdoctrine.org/
Радует тенденция, что на Хабре начинают бенчмаркить что-то существенное, а не echo vs print :)
Еще интересно бы глянуть на тест конструкций Zend_Db
$result = $db->select()->from()
->where()
->order()
->limit()
->query()->fetchAll();
против
$result = $db->query(ТО_ЖЕ_В_SQL)->fetchAll()
ясно, что второй вариант сильно быстрее, но вот насколько сильно...
Еще интересно бы глянуть на тест конструкций Zend_Db
$result = $db->select()->from()
->where()
->order()
->limit()
->query()->fetchAll();
против
$result = $db->query(ТО_ЖЕ_В_SQL)->fetchAll()
ясно, что второй вариант сильно быстрее, но вот насколько сильно...
Opera 9.5, все вставки на Flash пишут следующее:
Open Flash ChartБаг Оперы или дискриминация по браузерному признаку?
IO ERROR
Loading test data
Error #2032
Спасибо! Интересный анализ.
Сам использую DBSimple.
Сам использую DBSimple.
Вопрос несколько не по теме:
Как во всех этих классах (в PDO в особенности) с SQL Injection? Они сами экранируют символы или как в mysql_query надо mysql_escape_string() делать?
Как во всех этих классах (в PDO в особенности) с SQL Injection? Они сами экранируют символы или как в mysql_query надо mysql_escape_string() делать?
Sign up to leave a comment.
Сравнение скорости PDO, ADOdb, MDB2, Zend_Db, ADOdb Lite и DbSimple