Який з генераторів звітів найшвидший?

Чому найшвидший?


Думаю, у кожного, хто зіткнувся з вибором інструменту для генерації звітів, виникало питання – як саме вибирати, що порівнювати?


За розміром? А з якого саме розміром? Приміром, за розміром, який додасться до вашого додатком? Але є генератори звітів, які до додатка неначебто нічого й не додають, а йдуть в окремому dll-файлі, який за своїми розмірами раз на кілька більше файлу самого додатка. Або, приміром, до самого виконуваного файлу додається зовсім небагато, зате файли звітів буквально "переважують" додаток …


Або за розміром файлу звіту? Напевно, це буде більш вагомий фактор, але не вирішальний.


По зручності для користувача? А в чому його виміряти?


За швидкістю генерації звітів? Або ж, за нинішніх швидкостях процесорів, швидкість не повинна грати вирішального значення? Як виявляється, грає. Адже далеко не кожен додаток генерує тільки один простенький звіт в кінці робочого дня. Якщо додаток має бути розподіленим, багатокористувацьким, то, ймовірно, швидкість генерації та компактність звітів будуть вирішальними.


Зазвичай розробник вибирає собі такий інструмент як дружину – один раз і надовго. Тому як вивчати кожен раз для кожного проекту новий інструмент – справа невдячна. Вибір такої болюче, і далеко не кожен знаходить собі час і сили для досконалого порівняння (адже потрібно розібратися з кожним з інструментів). Зіткнувшись з такою проблемою, я вирішив розправитися з цим питанням остаточно.


Побачивши в одному із зарубіжних форумів результати порівняння швидкості роботи двох генераторів звітів, що включаються в постачання Borland Delphi: QuickReport і Rave Reports, Мене відвідала одна думка: "Які результати покажуть інші популярні у програмістів генератори звітів?".


Коли мені до рук потрапили исходники вищеописаного тесту, я вирішив розширити цей тест, не тільки за рахунок нових учасників тестування, але й за рахунок розширення діапазону тестування (тобто додавши нові тести).


Огляд траси та учасників


В якості "учасників забігу" були обрані 6 популярних генераторів звітів:

Всі учасники досвідчені, добре відомі Delphi-розробникам, зазвичай, саме між ними і стоїть вибір. Треба сказати, що, якщо візуально відмінностей між ними не так вже й багато (наприклад, ви без проблем перейдете від дизайнера звітів Crystal Reports до ReportBuilder, як, втім, і майже до будь-якого з учасників) архітектурно ж вони різняться дуже сильно.

QuickReport
Відомий тим, що з давніх пір поставляється в складі Delphi. Точніше – постачався. Починаючи з Delphi 7, це почесне місце зайняв Rave Reports. Один з найстаріших продуктів. За ідеєю, повинен бути найбільш стабільний.


Rave Reports
Раніше називався Report Printer.Свое нову назву придбав разом з візуальним дизайнером звітів (раніше сам дизайнер звітів називався Rave). Спочатку був саме генератором звітів, створюваних з коду, не орієнтованим на бенди. І, треба сказати, це помітно. Серед учасників візуальна частина у нього найбільш опрацьованим.


FastReport
Вивчивши уважно FastReport 2 і FastReport 3, можу сміливо заявити: дві версії одного продукту ідеологічно відрізняються між собою практично як два різні продукти! Схоже, хлопці з FastReports дуже серйозно підійшли до питання-заяви про "переробленої і поліпшеної архітектурі в трійці" вельми скромні.


Незважаючи на те, що спільного між ними достатньо: всі об'єкти є внутрішніми об'єктами генератора звітів (тут FastReport ближче, мабуть, до CrystalReports), відмінностей теж предостатньо – єдиний внутрішній скрипт у третьої версії і окремі свої скрипти для кожного об'єкта в другій, куди більші можливості у третьої версії, підтримка чотирьох різних скриптових мов, підтримка матричних принтерів (з порівнюваних учасників такі широкі можливості є тільки у FastReport) і т.п. Є навіть конвертор з другої версії в третю (зверніть увагу – інші учасники не йдуть на таку радикальну зміну форматів! У цьому є і мінуси – перехід з версії на версію не завжди простий, краще відразу вибирати третю версію, так і плюси – за форматом це самий новий генератор, не тягне за собою пережитки і артефакти – Звіти зберігаються в XML, що може служити гарантією тепер вже стабільності формату і його легкості читання), Судячи з динаміки розвитку, на сьогодні це найбільш динамічно зростаючий продукт.


ReportBuilder
Раніше цей проект називався PiParty. Досить довго він був беззастережним лідером серед генераторів звітів для Delphi. Треба сказати, що цей продукт випустила нову версію відразу ж після випуску нової версії Delphi (тому й номер версії збігається). Однак, хотілося б більш реальних змін і поліпшень від версії до версії, а не просто "підтримки наступної версії Delphi", особливо яскраво це видно на тлі того ж FastReport (але це вже моя особиста думка!)


Crystal Reports
Самий досвідчений учасник забігу. Деякі знають його під іменем ReportSmith (коваль звітів) по Delphi 1. У силу віку він досить великий у розмірах і важкий в інтеграції. Знижки на вік не робимо – Тому вибудовуємо усіх в один ряд. Borland знову включила його до складу свого продукту, на цей раз Delphi 2005. З Delphi 2006 на момент написання статті ситуація не ясна …


Кількість тестів я вирішив обмежити 4 етапами:


На старт!


Для отримання більш точних результатів тестування, на кожному етапі кожен з генераторів звітів виконує завдання етапу по 100 разів. Час виконання одного звіту не обчислюється з причини відсутності необхідності в цьому, тому що розстановка місць від ділення на 100 не поміняється.

Для отримання середніх результатів тестування і виключити вплив архітектури процесорів, тестування було проведено на двох комп'ютерах наступної конфігурації:
1. AMD Athlon XP 3200 +, 1024 МБ RAM;
2. Intel Mobility Pentium M 1.7 Ггц, 512 МБ RAM.


Вихідні тексти програми доступні у форматах zip (1.09M) і rar (468K).


Почали!


Пробки на дорогах?


Виявляється, така проблема як зручність використання і елементарна переносимість програм при перенесенні з комп'ютера на комп'ютер, дуже актуальна. При запуску програми на іншому комп'ютері, виявилося наступне:


Crystal Reports вимагає наявності встановленого дистрибутива для роботи програми, інакше програма випадає в помилку, що не зовсім коректно по відношенню до користувача. Звичайно, ми як справжні тестери не боїмося труднощів і дамо йому потрібні бібліотеки, але для кінцевого користувача це не зовсім зручно, навіть, швидше за все дуже, обтяжливо. І до того ж, може виникнути така ситуація, коли на комп'ютері користувача встановлена версія Crystal Reports, відмінна від необхідної і тоді таке буде …


Хочу звернути увагу потенційних користувачів Crystal Reports на наступне:
– При встановленні поточної версії Crystal Reports, інші програми, що використовують іншу версію Crystal Reports, з імовірністю 99% перестануть працювати, випадаючи в помилку.
– А якщо не встановлювати, то не буде працювати поточна програма, а буде випадати в помилку.
Я з цим зіткнувся, коли спробував запустити програму з версією Crystal Reports 10.0 на комп'ютері з 9-ї версією Crystal Reports. Хто сумнівається – може сам це перевірити. У підсумку довелося перекроювати роботу з Crystal Reports в програмі і вводити перевірку встановленого Crystal Reports на комп'ютері, де вона запускається.


Для користувачів QuickReport теж є неприємна новина.


При експорті в PDF для QuickReport Pro 4.04 відбувається витік пам'яті, при якій при виконанні 100 тестів не звільняється близько 350 Мб RAM, що призводить до некоректної роботи інших програм. Ця проблема вирішена в останній версії продукту (в 4.06 цієї проблеми не виникає).


Ще мені дуже не сподобалася реалізація візуальності в Rave Reports: у користувача, який не мав достатнього досвіду по роботі з даним продуктом, виникнуть великі проблеми по створенню будь-якого звіту, особливо це стосується роботи з базами даних. Я і сам свого часу зіткнувся з такими проблемами, коли для створення простого звіту з базами даних витратив, мало не цілий день, для виконання поставленої завдання.


У FastReport 2 відсутній експорт у формат PDF, тому в третьому тесті він брати участь не буде, хоча, забігаючи вперед, хотів би я подивитися на його результати в цьому тесті.


Марш!


Перейдемо, власне, до самого тестування.


I – й етап. У цьому тесті, всі учасники виконують наступне завдання: створення і збереження у файл простого звіту, що складається з 2-х сторінок. Для заповнення використовуються 6 полів з БД, що входить в постачання будь-якої версії середовища програмування від фірми Borland – customer.db.
















































Учасник  Час виконання  Розмір отримуваного файлу 
ПК № 1  ПК № 2  Середнє 
QuickReport  2.969 2.523 2.746 106 кб
Rave Reports  2.140 2.364 2.252 3.77 кб + 14.4 кб
FastReport 3  0.734 1.051 0.893 0.251 кб
FastReport 2  1.109 1.032 1.070 34.3 кб
ReportBuilder  4.234 4.236 4.235 72.3 кб
 Crystal Reports   12.281 20.834 20.783 15 кб


II – й етап. У цьому тесті, всі учасники виконують наступне завдання: створення і збереження у файл складного звіту, що складається з 14-х сторінок. Для заповнення використовуються всі поля, в тому числі й графічні, з БД, що входить в постачання будь-якої версії середовища програмування від фірми Borland – biolife.db.
















































Учасник  Час виконання  Розмір отримуваного файлу 
ПК № 1  ПК № 2  Середнє 
QuickReport  10.875 10.345 10.610 1.32 Мб
Rave Reports  13.124 20.519 16.820 4.62 кб + 1.08 МБ
FastReport 3  9.703 11.307 10.505 2.10 МБ
FastReport 2  4.422 3.004 3.713 519 кб
ReportBuilder  13.969 11.677 12.823 1.15 МБ
 Crystal Reports   24.141 25.085 24.613 156 кб


III – й етап. У цьому тесті, всі учасники виконують таке завдання: експорт у формат PDF складного звіту, що складається з 14-х сторінок. Для заповнення використовуються всі поля, в тому числі й графічні, з БД, що входить в постачання будь-якої версії середовища програмування від фірми Borland – biolife.db.
















































Учасник  Час виконання  Розмір отримуваного файлу 
ПК № 1  ПК № 2  Середнє 
QuickReport  1072.796 654.411 863.604 248 кб
Rave Reports  60.954 48.980 54.967 515 кб
FastReport 3  98.577 92.193 95.385 434 кб
FastReport 2 
ReportBuilder  121.781 40.919 81.350 3.11 МБ
 Crystal Reports   250.750 251.260 251.009 156 кб


IV – й етап. У цьому тесті, всі учасники виконують таке завдання: експорт у формат HTML складного звіту, що складається з 14-х сторінок. Для заповнення використовуються всі поля, в тому числі й графічні, з БД, що входить в постачання будь-якої версії середовища програмування від фірми Borland – biolife.db.
















































Учасник  Час виконання  Розмір отримуваного файлу 
ПК № 1  ПК № 2  Середнє 
QuickReport  68.845 50.302 59.569 128 кб + 360 кб (карт.)
Rave Reports  354.062 517.104 435.583 340 кб + 35.2 МБ (карт.)
FastReport 3  26.656 25.797 26.227 76.6 кб + 7.21 МБ (карт.)
FastReport 2  25.453 74.698 50.076 47.8 кб + 11.2 МБ (карт.)
ReportBuilder  340 кб + 35.2 МБ (карт.)
 Crystal Reports   225.031 226.102 225.567 197 кб + 20.2 МБ (карт.)


У результаті проведення цього тесту було відмічено наступне:


Фініш!


Підсумки тестування:

У першому тесті перше і друге місця з великим відривом займають продукти від фірми Fast Reports Inc. Третє займає Rave Reports з відставанням від другого місця на 110.5 %.


У другому тесті перше і друге місця відривом займають продукти від фірми Fast Reports Inc. Третє займає QuickReport з відставанням від другого місця на 1 %.


У третьому тесті перше місце займає Rave Reports. Друге з відставанням на 48 % Посів ReportBuilder. На третьому місці з відставанням від другого на 17 % Розташувався FastReport 3.


Четвертий тест знову завершився перемогою продуктів від фірми Fast Reports Inc. На третьому місці з відставанням від другого на 19 % Розташувався QuickReport.


Хто переміг?


За підсумками всіх чотирьох тестів перший і друга місця зайняли продукти від фірми Fast Reports Inc: FastReport 3 і FastReport 2. Третє місце зайняв Rave Reports від фірми Nevrona Designs. Четверте місце з дуже малим відставанням від третього зайняв QuickReport Pro від фірми QBS Software Ltd. Слідом за ним йде ReportBuilder від фірми DIGITAL METAPHORS CORPORATION. На останньому місці опинився Crystal Reports від фірми Business Objects SA.


А в цей час за лаштунками …


Як показали результати тестів і особисті враження при створенні програми практично всі генератори звітів мають свої "вузькі місця".

Робота зі створення звітів в Crystal Reports виявила, що з середовища програмування не можна викликати дизайнер ні для створення нового звіту, ні для внесення виправлень у вже готовому. До того ж формування звіту, схоже відбувається на етапі його побудови в дизайнера, на цей висновок наводить той факт, що при відкритті звітів різного ступеня складності час відкриття практично однаково. І програмно внести зміни до відкривається звіт дуже складно, вірніше практично нереально. Таким чином, ветеран ринку генераторів звітів мало того, що вимагає наявності своїх бібліотек, великий розмірами і не повороткий. До того ж, практично відсутня будь-яка документація по роботі зі звітом у коді програми. Скрізь як правило, існують описи, і то не повні, і для певних версій Crystal Reports, як створювати звіт у дизайнера і більше нічого.


QuickReport, на відміну від інших, потребує створення окремої форми, що містить її звіт, що незручно для користувача. До того ж при дублювання бендів, наприклад є необхідність зробити висновок звіту, містить два примірники бланка, виводиться тільки один і в область перегляду і при експорті.


ReportBuilder для підключення до БД, крім ppDBPipeline, вимагає наявність компонента DataSource (з палітри Data Access), що, по-меншій мірі не зручно для кінцевого користувача. До того ж, сам компонент не підтримує експорт у формат HTML, для здійснення цієї функції розробники рекомендують використовувати сторонні компоненти, такі як: TExtraDevices by James Waler і TcdHTML Device by Cyberdyme Data Systems, які також є платними. Таке ставлення до користувачів RB, м'яко сказати дивує, купивши сам продукт, ціна якого знаходиться приблизно на одному рівні з іншими генераторами звітів, припадає на здійснення можливості експорту в HTML, набувати ще й окремі компоненти. Інші продукти мають власні методи експорту.


Rave Reports, крім вищеописаної невдалої реалізації візуальності, ще має таку "незадокументірованние" можливістю, вірніше проводить приховану від очей користувача діяльність: при запуску звіту зберігає дамп підготовленого звіту у файлі *. ndr. До того ж, щоб Rave Reports нормально працював потрібно ще додати компонент RvNDRWriter, інакше нічого не працює. Добре, з цим можна було змиритися, але що найцікавіше, експорт неможливо здійснити без використання цього самого файлу. Інші продукти додатковий файл не потрібно. Єдиним розумним поясненням вимоги наявності цього файлу є припущення про те, що в цьому файлі знаходиться якимось чином перетворений звіт для полегшення роботи з його експортом.


З експортом у FastReport "ах теж не все гладко. Наприклад, в FastReport 2 для експорту в HTML існує цілих 3 компоненти – для чого це потрібно? Перший з них некоректно передає оформлення документа, до другого претензій – ні, це самий оптимальний метод, з 3-їм я так і не домігся успіху, так що нічого хорошого, так і поганого про нього сказати не можу. Звичайно, у фірми Fast Reports Inc пріоритетним продуктом є FastReport 3 та, таку кількість експортом швидше за все пов'язано з налагодженням різних алгоритмів, вибором кращого для використання в 3-й версії самого оптимального. У FastReport 3, якщо для звіту, побудованого з використанням певного frxDBDataSet "а (використовується, наприклад при заповненні бенду), якщо цей же frxDBDataSet вибрати в якості джерела даних для всього звіту, то при виклику перегляду додаток вилітає в помилку "Не можна використовувати один DataSet для звіту і бенду", такого ж характеру помилка вилітає при інсталяції цього frxDBDataSet "а для сторінки. Як же таке може бути? Або бенд, що лежить на сторінці та сама сторінка не належить до звіту, поява такої помилки незрозуміло. І швидкість експорту у формат PDF залишає бажати кращого.


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*