Лучше ли построить Android-график с помощью JAR или OpenGL

Я пытаюсь построить график в реальном времени с почти 2000 точками, рисуя по одной точке за раз. Это хорошо работает как с JAR (achartengine, график для Android), так и с OPENGL, но построение графика очень медленное. Пожалуйста, предложите методы для увеличения скорость прорисовки.


person swetha kini    schedule 03.07.2013    source источник


Ответы (2)


Укажите платформу, которую вы хотите использовать

Эта проблема со скоростью может влиять на обе стороны.

Подход библиотеки (jar, как вы его называете) изначально будет быстрее рисовать, потому что я предполагаю, что они рисуют на холсте. Мы используем этот подход для рисования сложных диаграмм в нашем приложении. Этот путь прост и прямолинеен. Диаграммы в основном статичны с некоторыми функциями для взаимодействия.

Подход OpenGL потребует больше времени для первоначального рендеринга, потому что он должен сначала загрузить GLView и запустить OpenGL, прежде чем диаграмма сможет рисовать, и иногда это может занимать много времени, но как только он будет загружен, будет намного быстрее выполнять операции рисования и причудливые функции, чем подход jar.

В конце концов, все сводится к тому, что вы хотите сделать. Если вы хотите только построить диаграмму и обновить ее последними данными, я бы не стал использовать OpenGL, но если вы хотите добавить классные функции масштабирования и панорамирования, вы определенно можете использовать OpenGl для выполнения этих операций.

Вы ограничены библиотеками

Что касается библиотек, вы можете улучшить только способ их реализации, например, проверить наличие ненужных циклов for, убедиться, что вы не вызываете никаких ненужных методов на диаграмме и т. д. (не может помочь вам улучшить, не показывая код)

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

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

person the-ginger-geek    schedule 03.07.2013
comment
Один из подходов, которые я пробовал, заключался в использовании androidplot с использованием фрагментов. Не могли бы вы проверить [это]: (stackoverflow.com/questions/17315745/)! . - person swetha kini; 03.07.2013

Что вы имеете в виду под "slow"? Низкая частота кадров? Какой скорости вы хотите достичь?

Если вам действительно нужна более высокая скорость рендеринга, у вас есть только один серьезный выбор: программирование в OpenGL.

person escalator    schedule 04.07.2013
comment
Если я строю динамический график с 2000 точками, близкими друг к другу, кажется, что OpenGL замедляется. Я строю график со скоростью 3 мс. Пожалуйста, предложите, может ли OpenGL увеличить скорость. - person swetha kini; 08.07.2013