2013-05-27 2 views
3

J'ai été informé que l'utilisation de Canvas.drawPath (chemin, peinture) est sensiblement plus lente que Canvas.drawLine() dans une ligne ou à l'aide de Canvas.drawLines() à la place. Je ne peux pas donner de données de performance exactes, mais j'ai remarqué sur un Nexus 10 que le dessin était vraiment lent (< 10 FPS) en utilisant le chemin, tandis que l'utilisation de drawLines était beaucoup plus fluide. Y a-t-il une mauvaise implémentation ou peut-être un paramètre pour accélérer les performances? A partir de maintenant, je ne peux pas utiliser drawPath() car les performances sont faibles.Pourquoi Canvas.drawPath() est-il si lent?

Répondre

0

Désolé de ne pas laisser de commentaire. drawPath() fait beaucoup plus d'appels supplémentaires. Path est un objet et non un tableau. Pouvez-vous même imaginer tous les appels supplémentaires qui sont faits. C'est une méthode requise pour Paint. Ce n'est pas bon pour dessin de ligne multiple rapide. Cela signifie plus pour la peinture.

1

J'avais aussi un problème avec drawPath (surtout sur mon Nexus 10). Mon problème est descendu, je mettais un

strokePaint.setMaskFilter(new BlurMaskFilter(16f, BlurMaskFilter.Blur.NORMAL)); 

qui a fait la performance horrible. Exécution de 45 millisecondes à pour Canvas.drawPath. Une fois que je l'ai enlevé, je recevais des temps d'exécution entre 2-4 millisecondes