2016-09-11 1 views
0

Ma question est simple. J'utilise Renderscript à flou un Bitmap.Incompatibilités de vitesse Android Renderscript

J'ai sur moi trois appareils Android différents pour tester la vitesse & performances du même code. Et j'ai été témoin de certaines incohérences étranges que j'aimerais qu'on m'explique, si c'est possible.

  • 1er appareil: Nexus 7 2013 en cours d'exécution stock Android 5.0, enraciné avec un S4 Pro 4c @ 1.5GHz
  • appareil 2: Samsung Galaxy Note 2 en cours d'exécution en mode de cyanogène non officielle 13 (Android 6) avec un S800 , 4c @ 2.3GHz
  • 3ème appareil: Samsung Galaxy S4 Mini de mode de cyanogène 13 (Android 6) avec un S400 2c @ 1.7GHz

au premier coup d'oeil, le plus rapide devrait être la note 3 et la le plus lent devrait être le S4 Mini .

Voici les résultats du processus de flou d'une image encore et (un 100 fois) avec 25f comme radius. Le même code flou s'exécute sur tous les appareils.

  • Nexus 7: ~ 10 secondes;
  • Note 3: ~ 5 secondes et
  • S4 Mini: ~ 3 secondes.

Je pourrais ajouter que l'image que je floute est une image bitmap qui s'étend sur tout l'écran. Alors peut-être que c'est la raison, car il y a plus de pixels à gérer sur Nexus 4 que sur un Nexus 7? Ou pourrait-il être aussi la version d'Android?

Répondre

2

Ça va être une combinaison de quelques choses différentes:

  • mémoire (RAM) vitesse pour le SoC
  • L'utilisation d'un GPU intégré ou DSP par rapport à la CPU
  • Vitesse du interface entre le CPU et le GPU (ou DSP), le cas échéant
  • Taille des données

Comme vous avez noté, la résolution de l'écran est le sam e sur tous les appareils, donc la comparaison n'est pas juste. L'utilisation de GPU par rapport à l'unité centrale dépend du fabricant du périphérique (ou de la ROM personnalisée) disposant d'une couche "pilote" appropriée au niveau de la plate-forme. Sinon, Renderscript utilisera par défaut le processeur qui n'est souvent pas aussi performant.