- PVSM.RU - https://www.pvsm.ru -
Не так давно пришлось столкнуться с тривиальной задачей — найти решение, которое позволит рендерить рисунки графиков для .NET. Сразу оговорюсь, что меня интересовали только линейные графики. Камнем преткновения, который подтолкнул к переделыванию уже существующего решения (это были графики, встроенные в rdlc отчеты), было быстродействие. В целом, к искомому решению были предъявлены такие требования:
Погуглив, выяснилось, что существует достаточно много вариантов для решения данной задачи, и все они достаточно сильно отличаются по многим параметрам (размер сообщества, скорость работы, удобство). В процессе выбора решения было опробовано 7 бесплатных вариантов:
Ещё в самом начале я решил, что надо собрать как можно больше вариантов в одном месте и протестить их на быстродействие, а уже после этого было очень жалко выбрасывать в корзину проделанную работу. Поэтому было решено оформить эту статейку и выложить то, что получилось, на GitHub [10]. Таким образом, если возникла необходимость, Вы можете настроить каждое решение под себя и сразу же его проверить. Лично мне очень не хватало такой статьи в начале. Может быть, исходники вызовут улыбку у гуру, но новичкам, которые только вникают в .NET и ASP, они однозначно будут очень полезны.
Для сравнения скорости работы берутся дефолтные настройки графика, указывается разрешение выходного рисунка и ему скармливается фиксированное количество точек. Каждое решение прогоняется несколько раз, и в качестве реальной скорости берется среднее. Опять же, это достаточно субъективно, и, если Вы можете предложить более красивый подход, я с интересом выслушаю.
На моем ПК (Intel Core I5 3.10 GHz, 8gb ОЗУ, Windows 7 x64) вышло следующее распределение скорости работы:
№ | Решение | Количество итераций | Суммарное время (сек) | Среднее время на одну итерацию (сек) |
1 | Dislin charts | 5 | 1.9071907 | 0.38143814 |
2 | Zed Graph | 5 | 2.750275 | 0.550055 |
3 | NPlot | 5 | 3.1833183 | 0.63666366 |
4 | Web Chart Control | 5 | 5.130513 | 1.0261026 |
5 | Microsoft Chart Controls | 5 | 6.8456845 | 1.3691369 |
6 | Oxy Plot | 5 | 7.0067006 | 1.40134012 |
7 | Google Sharp charting | 5 | 9.8049804 | 1.96099608 |
Для различных входных параметров (разрешение изображения, количество точек на графике, параметры ПК, скорость интернета, фаза Луны и т.д.) результаты немного отличаются, поэтому Вы можете протестировать быстродействие у себя.
Я специально не делал глубокое сравнения фич и возможностей кастомизации, так как это довольно субъективная информация, которая сильно зависит от конкретной задачи. При необходимости, каждый желающий может провести полчаса, подебажить, посмотреть архитектуру решений, прикинуть, насколько легко их настроить под конкретные требования.
Если кто-то знает ещё бесплатные решения для графиков под .NET, которые пропущены в статье, — пишите в комментариях, и я постараюсь их добавить.
Автор: ivan_p
Источник [11]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/net/49825
Ссылки в тексте:
[1] DisLin: http://www.mps.mpg.de/dislin/
[2] статью: http://habrahabr.ru/post/125611/
[3] Google Chart Sharp: https://code.google.com/p/googlechartsharp/
[4] статьи: http://habrahabr.ru/post/17169/
[5] Microsoft Chart Controls: http://www.microsoft.com/ru-ru/download/details.aspx?id=14422
[6] NPlot: http://sourceforge.net/projects/nplot/
[7] OxyPlot: http://oxyplot.codeplex.com/
[8] ZedGraph: http://sourceforge.net/projects/zedgraph/
[9] WebChart: http://www.carlosag.net/tools/webchart/
[10] GitHub: https://github.com/perevernihata/DotNetChartingOverview
[11] Источник: http://habrahabr.ru/post/204308/
Нажмите здесь для печати.