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