Pull to refresh

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

Reading time4 min
Views23K

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

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

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

Для понимания того, что здесь тестируется и зачем, рекомендую сначала ознакомится с первой частью статьи. Данные для рисования графикам – это массив 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 в предыдущей части не включено, потому что я не смог заставить его прорендерить график в рисунок.
Tags:
Hubs:
Total votes 19: ↑17 and ↓2+15
Comments11

Articles