私がすでに行っているよりも良い方法があるかどうかはわかりません。現在、0に等しい10,000を超える値を持つlist(int [])があり、ゼロ以外のアイテムのみを探しています。
私の現在のアプローチは、 for ループを実行してゼロ以外のすべてをキャプチャすることですが、これを頻繁に実行し、プロファイリングにより、大量の CPU 時間がかかることが示されます (これを頻繁に実行しているため)。高価な cpu プロセスなしで同じ結果を得る方法はありますか (10,000 個のアイテムのうち、100 個未満が非ゼロになるため)。
これが私のデータの例です:
int[] list = {0,0,0,1,0,10 }
int[] list_names = {a,b,c,d,e,f}
最終的に必要なのは、これら 2 つのリストを使用して、ゼロ以外の値とその名前 (D=1 と F=10) のみを含む別の 2 つのリストを作成することだけです。機能する前に結果を並べ替える必要があるいくつかのソリューションを見てきましたが、データリストを並べ替えるとその名前を特定できないため、これは問題です。
これは可能ですか? for ループに比べて高速な方法はありますか?
申し訳ありませんが、この大きなリストは処理のために私のプログラムに残っており、それらのメモリフットプリントを削減するためにこれを実行しようとしています. 本当に必要なのはゼロ以外の値だけである場合、これらのリストの数億のキューが完全に格納されているため、これを実行してメモリを節約します(これは機能しているようです)が、そうしないようにしていますその時点に到達するには、CPUに少しヒットします(処理にCPUが必要なため)。