Каковы преимущества / недостатки QCustomPlot по сравнению с Qwt?
Я использую Qwt сейчас в течение двух лет. Мне нравятся его объектно-ориентированные классы, что позволяет очень легко адаптировать сюжеты и функциональность. В эти дни QCustomPlot становится все более популярным и конкурирует с Qwt. Конечно, я сравнивал Аписа. Однако меня интересуют свидетельства опытных пользователей из обеих библиотек. Что удобно? Что нет? Есть ли подводные камни?
4 ответов
Я бы не назвал себя "опытным", так как я использовал Qwt только в течение нескольких месяцев, а QCustomPlot в течение нескольких недель. При этом мои впечатления таковы:
- QCustomPlot, кажется, более активно развивается в настоящее время. Последний релиз состоялся в августе 2012 года (тогда как последний выпуск Qwt датируется 2011 годом). Субъективно его интерфейс кажется более "выровненным" с Qt framework.
- Qwt, с другой стороны, кажется более зрелым и характерным. Например, текущий выпуск QCustomPlot не имеет простого способа установить цвет фона для прямоугольника оси (поддерживается только настройка фона для пользовательского pixmap). Другой пример-Qwt имеет специальные классы и методы для облегчения построения и масштабирования кривых с очень большим количеством точек. Я не нашел ничего подобного в QCustomPlot.
EDIT: автор QCustomPlot является в курсе отсутствует функциональность для установки фона сюжета и обещает добавить его в предстоящий выпуск.
есть еще одно важное различие между qcustomplot и Qwt-лицензированием. - Qwt-это LGPL, поэтому вы можете связать его с проектом, отличным от GPL. QCustomPlot это GPL v. 3, и что многие люди (включая меня) считают слишком строгими. Автор QCustomPlot приглашает связаться с ним, если вы хотите лицензию LGPL.
EDIT2 (25 марта 2013): новые выпуски ветвей Qwt 5.* и 6.* появился в ноябре, который аннулирует" более активно развитое " преимущество QCustomplot
Я не могу сравнить обе библиотеки, так как я использую только QCustomPlot (в течение года), но я считаю, что мой комментарий может быть полезен другим.
плюсы QCustomPlot:
- публично доступен на Gitorious,
- Живая пользовательская база, готовая помочь (включая самого автора),
- открытость для лицензирования LGPL (в обмен на пожертвование, в моем случае),
- очень чистый и лаконичный интерфейс,
- очень легко найти ошибку, если она присутствует (мои исправления редко были длиннее одной строки)
- легко расширить;
- очень взломать в то, что вы хотели бы разбить из декартовой библиотеки заговора,
- хорошая документация,
- доступный в сконденсированной форме 1 .ч и одна .cpp файл-удобный для быстрой интеграции или специально построенных один-widgeters,
- очень хорошая работа (во всех моих случаях),
- это очевидно, что автор любит хороший код и может его создать,
- очень хорошо продуманная дорожная карта(на долгое время).
минусы QCustomPlot:
- очень строго декартовой (читай: нет круговых диаграмм),
- в моем случае потребовалось некоторое время, чтобы получить необходимое понимание всех важных вещей (если кто-то любит реализовывать расширения сопоставимого качества с основой),
- возможно, немного медленная эволюция (как многие другой-занят - проекты man),
- используется только в основном потоке (i. e. когда вам нужно генерировать изображения, скажем, на многопоточном веб-сервере, вам нужно запустить эту библиотеку в основном потоке, что бы это ни значило для вашей реализации).
Если требуется лицензия LGPL-ish, может не быть бесплатного варианта (зависит от рассмотрения автора). Учитывая качество и удобство использования библиотеки, пожертвование моя компания дала в обмен для LGPL лицензионное соглашение не было излишним.
при построении графика много точек. и пользователь сконцентрировать точку на весь сюжет. ie (ось x, y полностью покрыта пикселями)
(количество очков = приведено ниже расчета)
при перетаскивании сюжет:
- Qwt дать путь намного лучшая производительность над QCustomPlot.
- QCustomPlot перетащить/себя перепланировку лаги способом больше чем Qwt, и это плохо для пользовательского интерфейса.
- задержка Qwt игнорируется и допустимый.
- Qwt требует меньше обработки.
Что я заметил: при перетаскивании Qwt перетаскивает только область участка,а после ее удаления рисует область. а QCustomPlot пытаются replot прежде чем упасть. (обратите внимание, что это может помочь парням QCustomPlot сделать его лучше.)
кроме того, Qwt предоставляет параметр необработанного буфера, которым можно управлять извне. я смог уменьшить (QcustomPlot)150Mb до меньше, чем (Qwt по)40МБ. сохранение,
QCustomPlot заставить пользователя, чтобы выделить память для оси X (errorbar+ , errorbar-), оси Y (errorbar+, errorbar-) (2 * 2 * sizeof (double)) память теряется из 3 * 2 * sizeof (double) ie 32byte из 48byte является отходом (для 1sample), где только Qwt требуется 16byte для одного образца (для x и y).
afai понять, errorbar может быть достигнуто в Qwt также
- равное количество пунктов (96kilosamples / sec * буферизация 10second = 96 * 1000 * 10 = ~1M)
- отключение сглаживания в QCustomPlot и включено в Qwt по
- же re-построение алгоритма. (примите данные на таком же интервале времени от прибора и пожара replot потом)
даже после включения сглаживания, Qwt был намного лучше в производительности.
Примечания:
- Qwt является зрелым, эффективным.
- QCustomPLot дает лучший внешний вид. (немного лучше, чем Qwt по.)
Qwt можно сделать гораздо более привлекательным сразу после изменения фона на белый, сглаженный включен и сетки
проверено на:
- Qwt 6.1.0 скомпилирован для Qt5
- QCustomPLot 1.2.1 собрали для Qt5
- Qt5.2.1
- Linux localhost.локального домена 3.13.11-100.fc19.архитектуру x86_64 #1 СМП Ср 23 апр 20:10:57 мирового архитектуру x86_64 архитектуру x86_64 x86_64 с 2014 GNU/Линукс
- процессором i3-3120M процессор @ 2.50 ГГц X 4
кроме того, qcustomplot peform то же самое на Qt4.
Это мой вывод и может варьироваться от условий к условиям.
У меня есть переключатель обратно в Qwt. надеюсь, это поможет другим в выборе. :)
минор:
- Con QCustomPLot требует отдельного файла qmake для загрузки. (разочарование для начала)
- Con Qwt имеет несколько файлов для компиляции.
- Pro QCUstomPlot имеет только два файла : источник и заголовок
- Con ни один канал не имеет IRC-канала (по крайней мере, не на Freenode)
- Con QCustomPlot имеет несколько примеров, помещенных в один исполняемый файл.
- Pro Qwt имеет много примеров, распределенных по многим исполняемым файлам
- Con QCustomPlot не имеет плагина QtCreator
- Con QCustomPlot недоступен в репо (по крайней мере, не на Fedora 19)
- Pro Qwt имеет много других вкусностей
- Con Qwt громоздкий : p
- Pro Qwt поддержка CMake
- Pro Qwt намного более гибкий (afaif)
пожалуйста, поправьте меня, если я ошибаюсь в некоторых пунктах.
плюсы:
- легко начать работу IMO (API интуитивно понятен и хорошо документирован)
- хорошее качество сюжета и быстрая реакция при панорамировании и масштабировании.
- один .ч./cpp-файл (т. е. нет необходимости ссылаться на скомпилированные библиотеки, отличные от QTs)
плюсы:
- GPL (не LGPL)
- внутренне использует структуру данных, которая хранит 6
double
S для каждой точки данных, даже если вам нужно толькоX
иY
- внутренне он использует
QMap
для хранения точек данных и их сортировки. Очень эффективно для панорамирования и масштабирования, но очень медленно заполняется, когда количество выборок велико (например, 1,000,000 точек данных)