首頁  >  文章  >  優化 Android Java 循環,根據 FloatBuffer 掩碼數組複製一些元素歸零的數組

優化 Android Java 循環,根據 FloatBuffer 掩碼數組複製一些元素歸零的數組

王林
王林轉載
2024-02-06 09:06:031157瀏覽
<div class="wenti">問題內容</div> <br><p>我在 android 中有一個如下所示的函數,它有點慢,是我的即時應用程式的瓶頸。我正在考慮以某種方式使其更快,也許透過 gpu 或任何可能的方法。有哪些方法可以使用並行化使其更快、更有效率? </p> <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> <p>上下文用於分割任務。基本上,ml 模型在位元組緩衝區中傳回一個遮罩。我將它傳遞給這個函數以使背景變成粉紅色。在此僅供參考。 </p> <br><h2 class="daan">正確答案</h2> <br><p>(評論太長)但你可以輕鬆做到:取代</p> <pre class="brush:php;toolbar:false;">float probability = 1 - floatbuffer.get(); if (probability > 0.9) {</pre> <p>由</p> <pre class="brush:php;toolbar:false;">if (floatbuffer.get() < 0.1) {</pre> <p>而且:老實說,我不知道編譯器是否編寫了一個機器碼來計算<code>width*height</code> 在<strong>每個</strong>循環中計算中止標準(我希望/認為<strong>不是</strong>) >)。但嘗試一下:添加該行</p> <pre class="brush:php;toolbar:false;">int product = width*height; int[] array = new int[product];</pre> <p>然後設定</p> <pre class="brush:php;toolbar:false;">for (int i = 0; i < product; i++) {</pre> <p>這樣,你就消除了循環中的所有算術運算(除了必不可少的 <code>i </code> 和 <code><</code> )。 </p>

以上是優化 Android Java 循環,根據 FloatBuffer 掩碼數組複製一些元素歸零的數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除