Небольшое сравнение компонентов доступа к IB/FB/Yaffil.
Прошел почти год

Max Rezanov, Южно-Российский кадастровый центр "Земля".

24.06.2002:

 

За год мнооооого воды утекло Sergey Nikolaenko

 

Она (статья) устарела практически в момент опубликования. Но это уже вряд ли кто проверит. Serge Buzadzhy

 

ЗЫ. Да... если будешь мерять, замерь и
ИБО пожалуйста. Лады? Serge Buzadzhy

Прошло некоторое время, как говориться ничто и никто не стоит на месте... Возвращаясь к первоначальной задаче с учетом обновлений продуктов. Основной результат, как и прежде, графики, гнусные мысли можно не читать :).

При рассмотрении участвовали:

BDE v 5.1 (входить в состав Delphi5)

IBX v 5.01 (накачен на Delphi5 официальный ibxdp502upd.exe)

FIBC v 4 (http://www.fibplus.net)

OLE DB provider от Lipetsk Center of Legal Informatization. (http://www.lcpi.lipetsk.ru/prog/russ/start/ibprov_ib.html)

IBObjects 4.2(1) (http://www.ibobjects.com)

Общее состояние среды обитания: Windows 2000 prof rus, IB v 6.0.1 от борланда, на момент запуска тестового приложения ОЗУ - 160 МБ свободно из 256(2). Delphi5 установлен ServicePack 1.

Начальные условия практически не отличаются от указанных в предыдущей статье за исключением количества записей(3) в таблице. Кроме того, для "чистоты эксперимента перед каждым запуском был выполнен останов SQL сервера". Повторимся - открытие базы данных, открытие выборки вида select * from table, полный фетч до конца набора данных. В таблице ~115 000 записей. Структура таблицы следующая:

CREATE TABLE table (
ID_ACT CHAR(10) NOT NULL,
ID_ADMUSERS CHAR(10) NOT NULL,
ID_RID CHAR(10) NOT NULL,
ID_ADMACTIONS CHAR(10) NOT NULL,
MASTER_TAG_ACT VARCHAR(10),
ID_MASTER_ACT CHAR(10) NOT NULL,
KOGDA_ACT DATE default 'NOW' NOT NULL,
DATE_ACT DATE,
RELSUB_ACT VARCHAR(100),
REM_ACT VARCHAR(255));

Должен заметить сразу у нас есть изменения практически по всем параметрам итак результаты:

Время:

Общая картина рис 1., начало графика - первые 5000 записей рис 2. На правах комментария: ситуация вполне естественная - текущие результаты даже на одинаковых объемах отличаются от предыдущих, с учетом того, что к примеру BDE не менялось. Итак, складывается ощущение что IBX пытается стать все хуже и хуже :( по крайней мере он на последних позициях и если говорить о изменениях то в худшую сторону. FIBC обогнали BDE :). Вообще, если, как говорилось выше, BDE прекратило развитие (к моей печали, а может быть и не только моей), то FIBC и OLEProvider-у время идет на пользу - они развиваются в лучшую сторону, патчи IBX явно идут в другом направлении. Интересен и тот факт, что новичок, IBObjects, к концу набора данных вырвался на 1 место.

Память Delphi

Представлено на рис 3.Коротко: IBX - изменения не видны невооруженным взглядом. FIBC - более 1/5 памяти сэкономлено, BDE, OLEProvider - а их и не должно быть :), новичок - самый не требовательный и опять на первом месте.

Память процесса.

Представлено на рис 4.В принципе - все известно IBX,FIBC, IBObjects кушают только память дельфи, BDE показало что ему память тоже нужна :),OLEProvider - нетребователен как и прежде, а новичка все таки обставили в районе 20000.

Результаты

Общее впечатление: BDE - "замер", IBX - баги правятся, но чего-то выдающегося не происходит исправления багов, как правило, приводят к ухудшению параметров или в лучшем случае их не меняют. FIBC - развитие заметно, к сожалению, я не слежу достаточно пристально за эволюцией этого продукта и по поводу функциональной части не могу ничего сказать. OLEProvider - на первый взгляд изменения не заметны, но версии выходят периодически и существует бесплатный вариант(4), к тому же, может быть, для того чтобы почувствовать изменения нужны другие тесты. IBObjects - показатели неплохие. Но делать еще один график с ценами продуктов мне, честно говоря, не хотелось Ж:).

Данные 5 csv файлов лежат здесь скомпилированая программа просмотра ~400Kb.

Если есть желание получить исподники программы тестирования и отображения добро пожаловать на мыло, или можете взять из предыдущей версии статьи.

Назад в будущее(что еще может быть):

Возможно в ближейшем будут другие тесты, например, Dmitry Kovalenko предлагает сгенерить матрицу случайных переходов по датасету и посмотреть на результаты.
Хотелось проверить следующее поведение компонентов: скорость сворачивания данных в компонент TClientDataSet. Конечно для "простого" чтения данных гораздо быстрее, но не удобнее, использовать компоненты аналогичные TIBSql с минимальным временем доступа и использованием памяти.

Примечания:

1. У нас новичок по просьбе зрителей
2. При тесте использовались коммерческие библиотеки требующие наличия запущенной IDE Ж:( так что памяти осталось мало)
3. Все растет, все изменяется даже ОЗУ на компах растет
4. Как сказал автор (дословно не приведу цитату, но своими словами): к "несчастью" бесплатная версия достаточно стабильна :)


О результатах годичной давности читайте Небольшое сравнение компонентов доступа к IB v 6.0.1