Heim > Java > Hauptteil

Optimieren Sie die Android-Java-Schleife und kopieren Sie einige Arrays, deren Elemente basierend auf dem FloatBuffer-Maskenarray auf Null gesetzt werden

王林
Freigeben: 2024-02-06 09:06:03
nach vorne
1141 Leute haben es durchsucht
<div class="wenti">Frageninhalt</div> <br><p>Ich habe eine Funktion wie unten in Android, sie ist etwas langsam und stellt den Engpass meiner Echtzeitanwendung dar. Ich denke darüber nach, es irgendwie schneller zu machen, vielleicht über GPU oder eine andere mögliche Methode. Welche Möglichkeiten gibt es, die Parallelisierung zu nutzen, um sie schneller und effizienter zu machen? </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">Nach dem Login kopieren</div></div> <p>Kontext wird zum Segmentieren von Aufgaben verwendet. Grundsätzlich gibt das ml-Modell eine Maske in einem Bytepuffer zurück. Ich übergebe es an diese Funktion, um den Hintergrund rosa zu machen. Dies dient nur als Referenz. </p><br/><h2 class="daan">Richtige Antwort</h2><br/><p> (Kommentar ist zu lang), aber Sie können es ganz einfach machen: Ersetzen Sie </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">Nach dem Login kopieren</div></div> <p>Von </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">Nach dem Login kopieren</div></div> <p>Außerdem: Ich weiß ehrlich gesagt nicht, ob der Compiler einen Maschinencode geschrieben hat, um <code>width*height</code> das Abbruchkriterium in <strong>jeder </strong> Schleife zu berechnen (ich hoffe/glaube <strong>nicht </strong) >). Aber probieren Sie es aus: Fügen Sie diese Zeile hinzu </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">Nach dem Login kopieren</div></div> <p>Dann einrichten</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">Nach dem Login kopieren</div></div> <p>Auf diese Weise eliminieren Sie alle arithmetischen Operationen in der Schleife (außer den wesentlichen <code>i++</code> 和 <code><</code>). </p>

Das obige ist der detaillierte Inhalt vonOptimieren Sie die Android-Java-Schleife und kopieren Sie einige Arrays, deren Elemente basierend auf dem FloatBuffer-Maskenarray auf Null gesetzt werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!