2 пути Android равны, но производительность рисования разная

#android #performance #canvas #path

#Android #Производительность #холст #путь

Вопрос:

У меня есть 2 пути Android с одинаковыми действиями (moveto, lineto и т.д. ).

при рисовании и перемещении пути 1 это происходит быстро. (кадров в секунду)

при рисовании и перемещении пути 2 он в 10-20 раз медленнее. (кадров в секунду) Я использую тот же холст и ту же краску.

В чем может быть разница? Существуют ли какие-либо свойства пути, которые влияют на производительность рисования?

 canvas.drawPath(thepath, paint); // FAST
//canvas.drawPath(thepath2, paint); // SLOW
  

Комментарии:

1. Почему a -1. Я спрашиваю, есть ли какое-либо свойство пути, которое влияет на поведение рисования?

2. Идентичны ли пути или у них разные формы? drawPath может быть быстрее с более простыми формами, такими как множество прямых линий, и очень медленным с большим количеством неровностей.

Ответ №1:

Переходя к более подробной информации о производительности приложений Android, вы можете использовать Systrace по этой ссылке. Systrace проверит, и вы можете легко узнать, где это занимает больше времени в thepath2.

Комментарии:

1. Вы также можете запустить файл cmd, перейдите по пути cmd к вашему Android sdk и запустите команду, вы получите точную проблему. И еще одна вещь: как только вы научитесь использовать systrace, вы сможете наилучшим образом управлять производительностью своего приложения

2. Спасибо, я попробую это и для других проблем. Но мне интересно, в чем может быть разница. Если бы выделили проблему только для путей. Так в чем же может быть разница?

3. Вы можете сопоставить оба процесса рисования путей и сопоставить их трассировку. Вы получаете то, что выполняется в фоновом режиме, что вызывает задержку в пути 2

4. Я не могу найти инструмент systrace в своей папке SDK. Я обыскал всю SDK-папку. Где это взять? Нужно ли мне что-то загружать.

5. Я предполагаю, что это Android Studio, но я в Eclipse. Я не знаю, как запустить systrace из eclipse? В DDMS у меня есть кнопка «Захватить общесистемную трассировку с помощью systrace». Он выдал мне HTML-файл размером 280 кб, который при открытии становится просто пустым белым. Также после ожидания 1 минуты. Я на правильном пути?