<div class="wenti">問題內容</div>
<br><p>我在 android 中有一個如下所示的函數,它有點慢,是我的即時應用程式的瓶頸。我正在考慮以某種方式使其更快,也許透過 gpu 或任何可能的方法。有哪些方法可以使用並行化使其更快、更有效率? </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">登入後複製</div></div>
<p>上下文用於分割任務。基本上,ml 模型在位元組緩衝區中傳回一個遮罩。我將它傳遞給這個函數以使背景變成粉紅色。在此僅供參考。 </p><br/><h2 class="daan">正確答案</h2><br/><p>(評論太長)但你可以輕鬆做到:取代</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">登入後複製</div></div>
<p>由</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">登入後複製</div></div>
<p>而且:老實說,我不知道編譯器是否編寫了一個機器碼來計算<code>width*height</code> 在<strong>每個</strong>循環中計算中止標準(我希望/認為<strong>不是</strong) >)。但嘗試一下:添加該行</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">登入後複製</div></div>
<p>然後設定</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">登入後複製</div></div>
<p>這樣,你就消除了循環中的所有算術運算(除了必不可少的 <code>i </code> 和 <code><</code> )。 </p>
以上是優化 Android Java 循環,根據 FloatBuffer 掩碼數組複製一些元素歸零的數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!