タイトルに Java が含まれていますが、これはどのオブジェクト指向言語にも当てはまります。やろうとしていることのパフォーマンスを向上させるための新しいアイデアをいくつか知りたいです。
Object[] 配列を常に受け取るメソッドがあります。この配列内のオブジェクトを複数の配列 (リストなど) に分割して、メソッドが受け取るすべての配列の列ごとに独立したリストを作成する必要があります。
例:
List<List<Object>> column-oriented = new ArrayList<ArrayList<Object>>();
public void newObject(Object[] obj) {
for(int i = 0; i < obj.length; i++) {
column-oriented.get(i).add(obj[i]);
}
}
注: 簡単にするために、オブジェクトなどの初期化を省略しました。
上に示したコードはもちろん遅いです。私はすでに他のいくつかのことを試しましたが、いくつかの新しいアイデアを聞きたいです.
パフォーマンスに非常に敏感であることを知って、これをどのように行いますか?
編集:
いくつかのことをテストしたところ、次のことがわかりました。
ArrayList (またはその他のコレクション) を使用する代わりに、Object[] 配列を別のオブジェクトでラップして、個々の列を格納しました。この配列が容量に達した場合は、サイズが 2 倍の別の配列を作成し、System.copyArray を使用して内容をある配列から別の配列にコピーします。驚くべきことに(少なくとも私にとっては)、ArrayListを使用して内部列を格納するよりも高速です...