Maison >Java >Optimisez la boucle Android Java et copiez certains tableaux dont les éléments sont remis à zéro en fonction du tableau de masques FloatBuffer

Optimisez la boucle Android Java et copiez certains tableaux dont les éléments sont remis à zéro en fonction du tableau de masques FloatBuffer

王林
王林avant
2024-02-06 09:06:031192parcourir
<div class="wenti">Contenu de la question</div> <br><p>J'ai une fonction dans Android comme indiqué ci-dessous, elle est un peu lente et constitue le goulot d'étranglement de mon application en temps réel. Je pense le rendre plus rapide d'une manière ou d'une autre, peut-être via GPU ou toute autre méthode possible. Comment utiliser la parallélisation pour la rendre plus rapide et plus efficace ? </p> <pre class="brush:php;toolbar:false;">private int[] getArray (ByteBuffer byteBuffer) { int[] array = new int[width * height]; FloatBuffer fb = byteBuffer.asFloatBuffer(); for (int i = 0; i < width* height; i++) { float probability = 1 - floatBuffer.get(); if (probability > 0.9) { array[i] = originalBuffer[i]; } } return array; }</pre> <p>Le contexte est utilisé pour segmenter les tâches. Fondamentalement, le modèle ml renvoie un masque dans un tampon d'octets. Je le passe à cette fonction pour rendre le fond rose. Ceci est à titre de référence seulement. </p> <br><h2 class="daan">Bonne réponse</h2> <br><p> (le commentaire est trop long) mais vous pouvez le faire facilement : Remplacer </p> <pre class="brush:php;toolbar:false;">float probability = 1 - floatbuffer.get(); if (probability > 0.9) {</pre> <p>Par </p> <pre class="brush:php;toolbar:false;">if (floatbuffer.get() < 0.1) {</pre> <p>Aussi : honnêtement, je ne sais pas si le compilateur a écrit un code machine pour calculer <code>width*height</code> le critère d'abandon dans <strong>chaque </strong> boucle (j'espère/je pense <strong>pas </strong>) >). Mais essayez-le : ajoutez cette ligne </p> <pre class="brush:php;toolbar:false;">int product = width*height; int[] array = new int[product];</pre> <p>Puis installez-vous</p> <pre class="brush:php;toolbar:false;">for (int i = 0; i < product; i++) {</pre> <p>De cette façon vous éliminez toutes les opérations arithmétiques de la boucle (sauf l'essentiel <code>i++</code> 和 <code><</code> ). </p>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer