Это заключительная часть нашего сравнительного анализа двух известных генераторов отчетов Microsoft SQL Server Reporting Services и FastReport .NET. Мы уже рассмотрели ранее функциональные возможности, поддерживаемые технологии, объекты отчета и поддерживаемые форматы экспорта отчетов. В довершение анализа будет логичным провести замеры производительности.
Для тестирования возьмем простой отчет со списком из тысячи строк. Для чистоты эксперимента используем один и тот же источник данных в обоих генераторах отчетов. Суть теста – сформировать отчет и экспортировать его в три самых популярных формата: PDF, XLS, DOCX. Измеряем время в миллисекундах.
Тест производительности (1000 строк) |
||||||
Попытка |
SSRS PDF |
FR PDF |
SSRS XLS |
FR XLS |
SSRS DOCX |
FR DOCX |
1 |
2500 |
1703 |
234 |
875 |
1484 |
3297 |
2 |
1641 |
1890 |
328 |
562 |
1140 |
3219 |
3 |
2109 |
2844 |
235 |
844 |
1172 |
3219 |
4 |
1547 |
2985 |
250 |
843 |
1000 |
3360 |
5 |
1485 |
2672 |
265 |
875 |
1063 |
3297 |
Итак, пяти замеров мне кажется достаточно.
1) Экспорт в PDF. Для SSRS средний показатель 1856 миллисекунд. Для FastReport .NET – 2418 миллисекунд.
SSRS тут явно быстрее. FastReport есть над чем работать.
2) Экспорт в XLS. SSRS показал среднее время 262 миллисекунды, а FastReport .NET – 800. Тут ничего удивительного. Продукт от Microsoft должен быстрее экспортировать в форматы MS Office.
3) Экспорт в DOCX. И снова SSRS оказался быстрее, 1172 миллисекунды против 3513 у FastReport .NET. Ситуация ровно такая же, как и в предыдущем экспорте.
Можно признать лидерство в этой дисциплине за SQL Server Reporting Services. Для большей наглядности, результаты замеров приведены на графике:
Если ситуация с PDF экспортом для FastReport не так критична, то в XLSX и DOCX экспорте проигрыш по времени в 3 раза.
Теперь посмотрим на размер получившихся в результате экспорта файлов:
Размер файла экспорта, KB |
||
Экспорт |
SSRS |
FR |
|
308 |
204 |
XLS |
111 |
551 |
DOCX |
50 |
64 |
Как вы видите, PDF файл уFastReport .NET занимает на треть меньше места, чем у SQL Server Reporting Services. Благодаря большому количеству настроек PDF экспорта в FastReport .NET вы можете добиться минимального размера файла.
Что же касается экспорта в XLS и DOCX, то тут лучшие результаты показал SSRS. Размер XLS файла в пять раз меньше, чем у конкурента! Для DOCX разница не существенна.
Ну что ж, результаты этого теста не однозначны. Выводы сделаем в конце статьи.
А пока, проведем еще один тест – стресс тест. Будем выводить в отчете большое количество строк – 2458524. Согласен, вряд ли такие отчеты будут существовать в реальности, но для нашего теста то, что надо. В качестве СУБД используем MS SQL Server 2016 - родная стихия для SSRS.
Однако, SQL Server Reporting Services не осилил эту задачу:
Банально закончилась оперативная память. Как следствие – ошибка: Exception of type 'System.OutOfMemoryException' was thrown. Да, ОЗУ используют и другие программы, но можно же использовать виртуальную память. Из скриншота видно, что нагрузка на диск минимальна, значит файл подкачки не задействуется.
Теперь сформируем такой же отчет в FastReport .NET 2017.2:
Ждать пришлось долго – 40 минут. Но все-таки отчет был построен. Посмотрите на скриншот. Исчерпав всю оперативную память, FastReport .NET задействовал файл подкачки – нагрузка на диск 99%. Поставленная задача выполнена.
Измерения проводились на следующей конфигурации ПК: CPU – Intel Core i5-2450M (2.5GHz), RAM – 8 GB, OS – Windows 10 x64.
Последний этап сравнительного анализа завершен и пора бы завершать сей опус, осталось лишь подвести итоги испытаний по всем трем частям статьи. Давайте по пунктам, заодно вспомним, что было в предыдущих частях.
1) В начале мы рассмотрели функциональные возможности двух программ. В этом сравнении преимущество сталось за FastReport .NET. Преимущества: поддержка безразмерных страниц отчета, события в отчете, диалоговые формы и возможность изменять уже построенный отчет.
Оценки: SSRS – 0, FastReport .NET – 1.
2) Далее мы сравнили поддерживаемые технологии. FastReport .NET оказался в лидерах благодаря поддержке ASP .NET Core. Реальных прогнозов по поддержке ASP .NET Core в SSRS пока нет. Есть некоторые «костыли», но это совсем не то, чего бы нам хотелось.
Оценки: SSRS – 0, FastReport .NET – 2.
3) Поддерживаемые объекты отчета снова показали превосходство FR .NET. На мой взгляд, отсутствие объектов CheckBox и Barcode не простительно для SSRS.
Оценки: SSRS – 0, FastReport .NET – 3.
4) Экспорты отчета в различные форматы. Reporting Services предоставляет весьма скромный набор поддерживаемых форматов, только самое необходимое. FastReport поразил внушительным набором форматов на любой случай жизни. Это сравнение закрепило лидерство за ним.
Оценки: SSRS – 0, FastReport .NET – 4.
5) Измерение производительности оценивалось по времени экспортирования отчета в три разных формата: PDF, XLS и DOCX. В этом тесте безоговорочную победу одержал SSRS.
Оценки: SSRS – 1, FastReport .NET – 4.
6) Размер файла экспорта. Все те же три формата экспорта из предыдущего теста. Здесь FastReport .NET сформировал более компактный PDF файл. А SSRS сгенерировал меньшие файлы с расширением .xls и .docx. Оцениваю, как ничья.
Оценки: SSRS – 2, FastReport .NET – 5.
7) Стресс-тест на формирование «гигантского» отчета с более чем 2 миллиона строк Reporting Services провалил. Отчет не сформирован. FastReport справился за 40 минут.
Оценки: SSRS – 2, FastReport .NET – 6.
Если подводить итог по моим оценкам, то FastReport .NET уверенно превосходит Reporting Services по многим показателям и вполне бы мог заменить конкурента. Все достоинства продукта перечислять не буду. Скажу лишь, что ему под силу любая задача, связанная с генерацией отчетов.
Однако, я не могу сказать, что Reporting Services плохой генератор отчетов. Он выполняет свои задачи на твердую четверку. Ведь он создан для работы c MS SQL Server. Именно такая связка полностью оправдывает его использование.