Как стать автором
Обновить

Комментарии 37

Не совсем понимаю. Неужели не ясно, что PDO всех порвет, так, как это встроенное расширение в PHP, которое в свою очередь, написано на c, чем уже делает отрыв перед всеми другими классами, которые участвуют в тестировании?
PDO здесь только для наглядности, цель - сравнить классы не с ним, а между собой.
Зачем эта наглядность? Кому она нужна? Изначально ясно, что PDO быстрее всех тех, что в примерах. Можете хоть 10 раз минуснуть мое сообщение, но я абсолютно не вижу надобности в примере наличие PDO.
Вопрос в том, насколько быстрее. Имхо, это имеет значение, так легче оценить разницу в скорости между разными библиотеками, если принять во внимание этот разрыв.
GoDB добавьте, очень удобная и быстрая штука.
Это не DBAL даже теоретически, по сути библиотека очень похожа на DbSimple, только проще и работает через MySQLi. Не интересно.
А мне кажется интересно - MySQLi в бенчмарках быстрее, а организация goDB позволяет местами сделать ещё рывок вперёд по скорости. =)
MySQLi и MySQL практически равны по скорости. Я сделал дополнительные тесты, которые не вошли в обзор, они показали, что с MySQLi библиотеки работают либо также (ADOdb, ADOdb Lite), либо немного медленнее (зависит от реализации).
Просто мы тоже кое-какие бенчмарки устраивали, результат по MySQLi + goDB был неплохой.
Думаю, adw0rd сейчас что-нибудь расскажет об этом =)
НЛО прилетело и опубликовало эту надпись здесь
Ёмко =)
НЛО прилетело и опубликовало эту надпись здесь
Ну, об этом можно подумать.
Я бы убрал PDO... Если тестируем классы, так и нужно их тестировать между собой
А вот тучка троллей, что заминусовала мое первое сообщение в этой теме, считает иначе. Вот гоблины.
НЛО прилетело и опубликовало эту надпись здесь
mysqli_query
Что-то по ссылке графики сломатые.
Сравнение совершенно бессмысленное. Главное и единственное преимущество 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.
Хорошая работа, все на уровне, было интересно.
Хотелось чтоб в тест были включены Doctrine и Propel.
Абсолютно поддерживаю, как-то плохо обходить таких монстров в хорошем смысле этого слова.
Да, это будет интересно (также спасибо meniam за напоминание в комментарии ниже). Я добавлю их в тест.
а ты чего это, товарищ, с плюрка пропал?:)
Радует тенденция, что на Хабре начинают бенчмаркить что-то существенное, а не echo vs print :)

Еще интересно бы глянуть на тест конструкций Zend_Db
$result = $db->select()->from()
->where()
->order()
->limit()
->query()->fetchAll();
против
$result = $db->query(ТО_ЖЕ_В_SQL)->fetchAll()

ясно, что второй вариант сильно быстрее, но вот насколько сильно...
Это уже отдельная тема разговора. Мне было бы интересно ещё сравнить скорость с placeholders и без. Но это всё, пожалуй, для теста, посвящённого одной конкретной библиотеке.
Ну да, я про такой тест и говорю ;)
Opera 9.5, все вставки на Flash пишут следующее:
Open Flash Chart
IO ERROR
Loading test data
Error #2032
Баг Оперы или дискриминация по браузерному признаку?
Прошу прощения, Opera не поняла разметку для Flash. Исправил, и также убрал необходимость щёлкать для активации.
Спасибо! Интересный анализ.
Сам использую DBSimple.
Вопрос несколько не по теме:
Как во всех этих классах (в PDO в особенности) с SQL Injection? Они сами экранируют символы или как в mysql_query надо mysql_escape_string() делать?
Сами, при правильном использовании placeholders.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории