Средства построения графиков для .NET. Часть 2

в 21:29, , рубрики: .net, ASP, визуализация данных, графики и диаграммы, сравнение производительности, метки: , ,

Средства построения графиков для .NET. Часть 2
В первой части статьи был обзор бесплатных решений для построения графиков под .NET Framework. Но после того, как в комментариях был перечислен целый ряд вариантов, которых нет в статье, решено было вынести их в отдельную публикацию. В этой части представлены только коммерческие решения.

Сначала стоит сделать небольшое отступление по поводу того, как все это реализовано. Так как я не имел права заливать коммерческие бинарники в публичный доступ (в большинстве случаев использовал evaluation license), то, естественно, просто скачав исходники с репозитария, Вы не сможете сразу увидеть, как работают платные решения. Вместо ожидаемого графика Вы увидите такую картинку:
Средства построения графиков для .NET. Часть 2
Для того, чтобы выбранные Вами графики заработали, — просто перейдите по ссылке и скачайте соответствующий дистрибьютив.
В этом обзоре добавлено 6 коммерческих решений:

  • Chart Fx. Платное решение для построения всевозможного вида графиков. Согласно документации поддерживает .NET, java, HTML5, COM, WPF, Silverligth, Sql Reporting Services. Удобный в разработке, уверенный середнячок по скорости. Отдельно могу отметить адекватную и дружелюбную службу поддержки — имел удовольствие с ними пообщаться. На мой взгляд, цены слегка завышены, так как пакет компонентов значительно уступает тем же telerik и devexpress.
    Средства построения графиков для .NET. Часть 2
  • DevExpress. Чрезвычайно популярный пакет UI контролов, который охватывает куда более широкий ассортимент компонентов, а не только графическую визуализацию данных. Предвосхищая вопрос, скажу, что использовал не самую последнюю версию DevExpress (13.2), a предыдущую (13.1), так как скачал её буквально за пару дней до релиза. Среди средств построения графиков был использован компонент для WinForms, так как я не смог заставить веб-контрол рендерить рисунок, хотя потратил кучу времени. Может быть, не хватило настойчивости, может он и вправду этого делать не умеет на стороне сервера. Результаты быстродействия — ниже среднего по рейтингу.
    Средства построения графиков для .NET. Часть 2
  • Telerik. Ещё один огромный пакет компонентов, который по объему не уступает DevExpress. Как и все серьезные решения, имеет большой потенциал к кастомизации внешнего вида, но на дефолтных настройках работает неоправданно долго. Я не пытался обнулить все те плюшки, которые разработчики повесили на него по умолчанию, иначе было бы нечестно. В оправдание таким гигантам как DevExpress и Telerik можно сказать только то, что визуализация данных это не единственная задача которую решает их пакет компонентов, поэтому и спрос с них небольшой. Если Вы счастливый обладатель лицензии на их пакеты компонентов, то можно пользоваться графиками, не усложняя себе жизнь.
    Средства построения графиков для .NET. Часть 2
  • Chart director. Достойный кроссплатформенный (.NET, java, ASP, COM, VB, PHP, Perl, Python, Ruby, ColdFusion, C++) пакет, заточенный под визуализацию данных. В остальном, я не увидел существенных преимуществ перед другими коммерческими решениями, за исключением быстродействия (самый шустрый среди платных решений).
    Средства построения графиков для .NET. Часть 2
  • ILNumerics. Шикарная математическая библиотека, написанная эксклюзивно под .NET. Удалось познакомиться только с той её частью, которая имеет отношение к визуализации данных, но даже этого хватило, чтобы понять, насколько она объемна. Из-за этого имеет довольно высокий порог вхождения и не самую интуитивно понятную архитектуру, поэтому не рекомендовал бы её использовать, если Вы не хотите потратить часы на простой линейный график. Для серьезных математических задач, которые требуют также визуализации данных, ничего лучше для .NET я не видел.
    Средства построения графиков для .NET. Часть 2
  • Tee chart. Предоставляет компоненты для построения графиков под .NET, Java, ActiveX / COM, PHP, Delphi VCL / FireMonkey. Неплохое быстродействие, удобная архитектура. Итог – очень даже неплох, хотя перед конкурентами ничем не выделяется.
    Средства построения графиков для .NET. Часть 2

Для понимания того, что здесь тестируется и зачем, рекомендую сначала ознакомится с первой частью статьи. Данные для рисования графикам – это массив 2*n псевдослучайных чисел в указанном диапазоне. Тестирование проводилось при таком следующем наборе входных данных: количество итераций для каждого решения (10), количество графиков на одну итерацию (10), разрешение выходного рисунка (400*300 px), количество точек на одном графике (100), максимальное допустимое значение в наборе (1000). Параметры ПК на котором прогонялись тесты – (Intel Core I5 3.10 GHz, 8gb ОЗУ, Windows 7 x64)
Кстати, что не понравилось в некоторых решениях, так это то, что иногда разработчики автоматически сортируют массив входных данных по возрастанию, поэтому на некоторых графиках ломаная строго возрастает по оси абсцисс. Не уверен, хорошо это или плохо, но имхо это лишнее и ненужное ограничение, которое накладывается на разработчика.
Для полноты картины, в таблицу результатов я решил добавить также бесплатные решения с предыдущей статьи, их описание доступно там же.

Решение Лицензия Количество итераций Суммарное время (сек) Среднее время на итерацию (сек)
1 Zed Graph Free 10 2.281 0.2281
2 Dislin charts Free 10 2.591 0.2591
3 ChartDirector Commercial 10 3.604 0.3604
4 NPlot Free 10 3.846 0.3846
5 Oxy Plot Free 10 4.091 0.4091
6 Web Chart Control Free 10 4.305 0.4305
7 Microsoft Chart Controls Free 10 4.353 0.4353
8 Chart FX Commercial 10 5.3 0.53
9 ILNumerics Commercial 10 6.079 0.6079
10 DevExpress Commercial 10 7.614 0.7614
11 Tee charts Commercial 10 10.004 1.0004
12 Telerik charts Commercial 10 11.496 1.1496
13 Open minded plot Free 10 13.034 1.3034
14 Google Sharp charting Free 10 14.12 1.412

Напомню, что мнение автора может расходиться с Вашими взглядами, поэтому будет круто, если Вы оставите свои фидбеки об опыте использования средств построения графиков под .NET. Также, если Вы знаете какие-то ещё решения, не включенные в обзор — пишите, и я попытаюсь их добавить.

DynamicDataDisplay, упомянутое пользователем NeoNN в предыдущей части не включено, потому что я не смог заставить его прорендерить график в рисунок.

Автор: ivan_p

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js