Какой из генераторов отчетов самый быстрый?Источник: Delphi Plus Сергей Медведев
Почему самый быстрый?Думаю, у каждого, кто столкнулся с выбором инструмента для генерации отчётов, возникал вопрос - как именно выбирать, что сравнивать? По размеру? А по какому именно размеру? К примеру, по размеру, который добавится к вашему приложению? Но есть генераторы отчётов, которые к приложению вроде как ничего и не добавляют, а идут в отдельном dll-файле, который по своим размерам раз в несколько больше файла самого приложения. Или, к примеру, к самому исполняемому файлу добавляется совсем немного, зато файлы отчётов буквально "перевешивают" приложение... Или по размеру файла отчёта? Наверное, это будет более весомый фактор, но не решающий. По удобству для пользователя? А в чём его измерить? По скорости генерации отчётов? Или же, при нынешних скоростях процессоров, скорость не должна играть решающего значения? Как оказывается, играет. Ведь далеко не каждое приложение генерирует только один простенький отчёт в конце рабочего дня. Если приложение должно быть распределенным, многопользовательским, то, вероятно, скорость генерации и компактность отчётов будут решающими. Обычно разработчик выбирает себе такой инструмент как супругу - один раз и надолго. Потому как изучать каждый раз для каждого проекта новый инструмент - дело неблагодарное. Выбор такой мучителен, и далеко не каждый находит себе время и силы для досконального сравнения (ведь нужно разобраться с каждым из инструментов). Столкнувшись с такой проблемой, я решил разделаться с этим вопросом окончательно. Увидев в одном из зарубежных форумов результаты сравнения скорости работы двух генераторов отчетов, включаемых в поставку Borland Delphi: QuickReport и Rave Reports, меня посетила одна мысль: "Какие результаты покажут другие популярные у программистов генераторы отчетов?". Когда мне в руки попали исходники вышеописанного теста, я решил расширить этот тест, не только за счет новых участников тестирования, но и за счет расширения диапазона тестирования (т.е. добавив новые тесты). Осмотр трассы и участниковВ качестве "участников забега" были выбраны 6 популярных генераторов отчетов:
QuickReport Rave Reports FastReport Несмотря на то, что общего между ними достаточно: все объекты являются внутренними объектами генератора отчётов (тут FastReport ближе, пожалуй, к CrystalReports), различий тоже предостаточно - единый внутренний скрипт у третьей версии и отдельные свои скрипты для каждого объекта во второй, куда большие возможности у третьей версии, поддержка четырёх различных скриптовых языков, поддержка матричных принтеров (из сравниваемых участников такие широкие возможности есть только у FastReport) и т.п. Есть даже конвертор из второй версии в третью (обратите внимание - другие участники не идут на столь радикальное изменение форматов! В этом есть и минусы - переход с версии на версию не всегда прост, лучше сразу выбирать третью версию, так и плюсы - по формату это самый новый генератор, не тянущий за собой пережитки и артефакты - отчёты хранятся в XML, что может служить гарантией теперь уже стабильности формата и его удобочитаемости), Судя по динамике развития, на сегодня это самый динамично растущий продукт. ReportBuilder Crystal Reports Количество тестов я решил ограничить 4 этапами:
На старт!Для получения более точных результатов тестирования, на каждом этапе каждый из генераторов отчетов выполняет задание этапа по 100 раз. Время выполнения одного отчета не вычисляется по причине отсутствия необходимости в этом, так как расстановка мест от деления на 100 не поменяется. Для получения средних результатов тестирования и исключить влияние архитектуры процессоров, тестирование было проведено на двух компьютерах следующей конфигурации: Исходные тексты программы доступны в форматах zip (1.09M) и rar (468K). Начали! Пробки на дорогах?Оказывается, такая проблема как удобство использования и элементарная переносимость программ при переносе с компьютера на компьютер, очень актуальна. При запуске программы на другом компьютере, обнаружилось следующее: 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.
II - й этап. В этом тесте, все участники выполняют следующее задание: создание и сохранение в файл сложного отчета, состоящего из 14-х страниц. Для заполнения используются все поля, в том числе и графические, из БД, входящей в поставку любой версии среды программирования от фирмы Borland - biolife.db.
III - й этап. В этом тесте, все участники выполняют следующее задание: экспорт в формат PDF сложного отчета, состоящего из 14-х страниц. Для заполнения используются все поля, в том числе и графические, из БД, входящей в поставку любой версии среды программирования от фирмы Borland - biolife.db.
IV - й этап. В этом тесте, все участники выполняют следующее задание: экспорт в формат HTML сложного отчета, состоящего из 14-х страниц. Для заполнения используются все поля, в том числе и графические, из БД, входящей в поставку любой версии среды программирования от фирмы Borland - biolife.db.
В результате проведения этого теста было замечено следующее:
Финиш!Итоги тестирования:В первом тесте первое и второе места с большим отрывом занимают продукты от фирмы 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 оставляет желать лучшего. |