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

王林
Libérer: 2024-02-06 09:06:03
avant
1249 Les gens l'ont consulté
<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> <div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">Copier après la connexion</div></div> <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> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>float probability = 1 - floatbuffer.get(); if (probability > 0.9) {</pre><div class="contentsignin">Copier après la connexion</div></div> <p>Par </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>if (floatbuffer.get() < 0.1) {</pre><div class="contentsignin">Copier après la connexion</div></div> <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> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>int product = width*height; int[] array = new int[product];</pre><div class="contentsignin">Copier après la connexion</div></div> <p>Puis installez-vous</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>for (int i = 0; i < product; i++) {</pre><div class="contentsignin">Copier après la connexion</div></div> <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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal