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

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

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

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

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

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

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

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

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

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

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

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

Як "учасників забігу" були обрані 6 популярних генераторів звітів:
  • QuickReport Pro 4.06 фірми QBS Software Ltd
  • Rave Reports 7.0 фірми Nevrona Designs
  • FastReport 3.23 фірми Fast Reports Inc
  • FastReport 2.56 VCL фірми Fast Reports Inc
  • ReportBuilder 10.02 фірми Digital Metaphors Corporation
  • Crystal Reports 11.0 фірми Business Objects SA

Всі учасники досвідчені, добре відомі 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 (але це вже моя особиста думка!)

Кількість тестів я вирішив обмежити 4 етапами:
  • Створення і збереження в файл простого звіту з 2-х сторінок з використанням 6-ти полів БД.
  • Створення і збереження в файл складного звіту з 14-ти сторінок з використанням всіх полів БД.
  • Експорт в формат Acrobat PDF складного звіту з 14-ти сторінок з використанням всіх полів БД.
  • Експорт в формат HTML складного звіту з 14-ти сторінок з використанням всіх полів БД.

Для отримання більш точних результатів тестування, на кожному етапі кожен з генераторів звітів виконує завдання етапу по 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.

197 кб + 20.2 МБ (карт.)

В результаті проведення цього тесту було відмічено наступне:
  • При експорті в HTML для QuickReport зображення виходять за кордон блоку і розміри зображення в експорті не відповідають розмірам у вихідному звіті.
  • При експорті в HTML для Rave Reports для кожної сторінки звіту створюється своя HTML-сторінка, і відбувається створення для кожного звіту нових файлів зображень (28 зображень х 100 повторів = 2800 файлів зображень), що призводить до додаткової витрати і дискового простору і часу на експорт .
  • При експорті в HTML для Crystal Reports відбувається створення для кожного звіту нових файлів зображень (28 зображень х 100 повторів = 2800 файлів зображень), що призводить до додаткової витрати і дискового простору і часу на експорт.
Підсумки тестування:

У першому тесті перше і друге місця з великим відривом займають продукти від фірми 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, як створювати звіт в дизайнера і більше нічого.

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

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

Будь ласка, оцініть статтю

Схожі статті