alekseev_ap
@alekseev_ap
Свободный разработчик

Почему такая разница в производительности SQLite в PHP и Delphi?

Есть база SQLite размером в пару Гигов. Компьютер имеет 32 Гига оперативки, большая часть свободна, т.е. рано или поздно база оказывается в файловом кеше. База используется в качестве словаря, никаких операций по изменению, удалению или вставки нет, одни селекты. Делаю выборку с помощью PHP. На каждый запрос получаю в ответ запись с двумя полями. Производительность порядка 15 000 запросов в секунду. Если делать это первый раз, то в разы меньше, порядка 5 000 запросов в секунду, но потом, видимо, база попадает в файловый кеш и операции идут с более высокой скоростью, которая более менее стабильна. То же самое пытаюсь сделать на Delphi, точнее на C++ Builder'е. Скорость порядка 200 селектов в секунду. Разница почти на 2 порядка! Хотя, казалось бы, скомпиленное приложение должно выполняться чуть быстрее, но результат прямо противоположный. В чём прикол?
  • Вопрос задан
  • 479 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Mercury13
Программист на «си с крестами» и не только
1. Есть подозрение, что вы по какой-то причине в C++-версии не предкомпилируете запросы. Запрос компилируется каждый раз, когда вы его исполняете. Хотя это зависит от обёртки — простыми Си’шными функциями работать с SQLite ой как тяжко, все используют обёртки.
2. Если компилируете SQLite классическим компилятором Embarcadero — он в несколько раз медленнее других. Хотя разницу в несколько порядков давать не может. Кстати, столь большие Си-файлы быстро заглючивают Embarcadero, и лучше SQLite отправить в статическую или динамическую библиотеку.
Ответ написан
nazarpc
@nazarpc
Open Source enthusiast
Важно то, с какой версией SQLite собраны PHP и Delphi приложение. Подозреваю, что PHP имеет гораздо более новую версию.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы