Я ищу способ нарисовать линейную диаграмму с большим количеством точек (до 10 000) эффективно на iOS. График получает данные в реальном времени и нуждается в обновлении несколько раз в секунду. Я пытаюсь найти способ эффективно нарисовать график, чтобы он не максимизировал процессор и блокировал основной поток при рисовании.Рисунок диаграммы с большим количеством точек эффективно на iOS
В настоящее время я создаю UIBezierPath
для линейной диаграммы, в фоновом потоке, добавляя все точки и рисуя ее в CALayer (с включенным асинхронным рисунком). Это не очень быстро, максимизирует процессор, и рисунок настолько медленный, что пользовательский интерфейс становится лагги. Я рисую данные в реальном времени, и теоретически я мог бы повторно использовать один и тот же UIBezierPath
каждый раз и просто добавлять новые точки, однако старые значения отбрасываются через некоторое время, то есть точки для удаленных значений должны быть удалены из пути безье , что невозможно.
Я ничего не нашел в эффективном построении больших наборов данных на iOS, но я надеюсь, что есть способы использовать GPU для повышения производительности.
вам нужно нарисовать все 10k точек? Даже на экране iPad это кажется чрезмерно чрезмерным ... (больше точек, чем горизонтальные пиксели). Рассматривали ли вы усреднение данных в меньший набор? – Hamish
@ originaluser2 Я полностью согласен. Я делаю некоторые работы с клиентом и еще не смог выговорить их из идеи рисовать эти многочисленные моменты. – JonasG
хорошо, если вы можете их убедить, усреднение - ваш лучший выбор! Я сомневаюсь, что вы сможете использовать большую часть графического процессора, не перейдя в Metal/Open GL. Я уверен, что 'UIBezierPath' в основном использует Core Graphics под капотом, и все работает на процессоре. – Hamish