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
1171 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!

source:stackoverflow.com
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