Высокопроизводительный UI Framework для .NET - PullRequest
1 голос
/ 03 августа 2010

Моя текущая задача - разработать программное обеспечение для измерений и тестирования, которое будет взаимодействовать с различными устройствами.Поскольку я должен предположить, что будет большое количество данных, передаваемых с устройств, которые должны отображаться в каком-либо компоненте печати или аналогичном, используемая среда пользовательского интерфейса должна быть максимально быстрой и быстро реагирующей.

У меня несколько лет опыта работы в WPF, но я думаю, что это не будет лучшим выбором с точки зрения производительности.В настоящее время я рассматриваю возможность использования Windows Forms, но сначала я хотел бы изучить некоторые варианты.

Знаете ли вы какие-нибудь хорошие UI-фреймворки для .NET (обертки для нативных фреймворков тоже подойдут) и каков ваш опыт их использования?Спасибо!

Ответы [ 6 ]

4 голосов
/ 03 августа 2010

Создайте прототип , чтобы увидеть, действительно ли существуют проблемы с производительностью.

Выбор Windows Forms вместо WPF представляется сомнительным, если он основан исключительно на предположениях.

2 голосов
/ 03 августа 2010

Итак, скажем, у вас есть 1000 чтений в секунду.Вы действительно думаете, что должны обновлять дисплей 1000 раз в секунду?

Такое отображение было бы бессмысленным.На экране будет слишком много мерцания.Если вы отображаете текстовые данные - он будет прокручиваться слишком быстро или будет мерцать, и его невозможно будет прочитать.

Фильмы показывают 24 кадра в секунду, все это быстрее, чем это не имеет значения для человеческих глаз.Что вы можете получить, если ваша система отображает больше изменений в секунду?Люди не могут реагировать так быстро.Так что, если вам нужно настроить систему несколько раз в секунду, вам нужно иметь несколько автоматических систем.

Как правило, вы должны пересмотреть цели, которые вы хотите достичь с помощью вашего пользовательского интерфейса.
Поищите в Google «Dashboard Design».

Я работал над системой, которая контролировала водяные скважины (насосы и клапаны) около 12-13 лет назад, когда современным уровнем техники был Pentium II.Мы сделали это с Delphi 2 и Windows NT, и у него было хорошее графическое представление системы.Проблемой производительности были последовательные интерфейсы, которые мы использовали для чтения данных.Показ был намного быстрее, чем это.

1 голос
/ 21 декабря 2011

Общей проблемой является то, что многие линейки бизнес-диаграмм не могут масштабироваться для отображения массивных наборов данных, как это требуется в научных или финансовых приложениях. Это особенно очевидно в механизмах рендеринга с сохранением режима, таких как WPF и Silverlight, которые могут быть очень медленными, когда вам нужно быстро обновить экран, хотя это относится к большинству технологий графического интерфейса.

В ответ на эту потребность я создал высокопроизводительный компонент диаграммы WPF / SL под названием SciChart . SciChart стремится заполнить пробел в сверхвысокопроизводительных научных / биржевых диаграммах и в рамках своей оптимизации использует собственные алгоритмы передискретизации, чтобы уменьшить набор данных перед рисованием, немедленный рендеринг в режиме и множество других оптимизаций, таких как пул объектов и повторное использование ресурсов ,

Пожалуйста, нажмите на ссылку SciChart , чтобы просмотреть демонстрацию производительности (требуется Silverlight 4 - также доступна версия WPF). Диаграмма может рисовать несколько серий с общим количеством точек по 5 или 6 цифр при интерактивных частотах кадров (20-50FPS в зависимости от аппаратного обеспечения). Это эквивалентно примерно 2 миллионам точек данных в секунду (100000 точек данных при 20FPS). Полная версия, готовая для коммерческого лицензирования, будет доступна очень скоро, возможно, к концу января 2012 года.

В соответствии с вашим конкретным требованием обратите внимание, что конвейер рендеринга WPF / SL будет отображать только со скоростью 60FPS, что обычно является частотой обновления монитора. Я бы предложил в этом случае наилучшим решением было бы пакетирование данных и добавление к диаграмме в событии CompositionTarget.Rendering. SciChart поддерживает пакетные обновления с одним рендером в конце через свой API, который совместим с программным кодом или MVVM. В результате вы можете перемещать данные на диаграмму так быстро, как вам нравится, но они отображаются только так быстро, как WPF / SL может отображать. Более 30 кадров в секунду практически не обнаруживаются человеческим глазом.

Еще одно соображение, которое вы можете пожелать, - это объем памяти, процессор и скорость. Я бы выбрал осторожно при оценке компонентов диаграммы, так как WPF / SL может быть серьезным бременем памяти!

0 голосов
/ 03 августа 2010

Вы можете использовать XNA или другие 3D API для рисования графики, но это может быть излишним.

0 голосов
/ 03 августа 2010

Я думаю, что .Net форма должна работать, так как VB6 UI делает.

Я разработал аналогичное приложение, которое отображает линейный график на экране, но оно было в VB6, и в то же время оно записывает данные в текстовый файл.700 + чтение в секунду (аналого-цифровое преобразование сигнала).

Возможно, вам потребуется построить данные путем кодирования (без использования стороннего контроля), это другой вариант.

Надеюсь, это даст вам некоторое представление.

0 голосов
/ 03 августа 2010

Похоже, что дополнительная точность WPF сделала бы его идеальным кандидатом.

Достаточно забавно, когда я набираю это, рядом со мной есть объявление, которое печатает: Radcontrols для WPF, когда вы серьезно относитесь к производительности, с некоторыми заговорами.

Может быть, то, что вы ищете :)

Также имейте в виду, что WPF значительно повысил производительность в версии 4.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...