Хотя у меня есть Java в названии, это может быть для любого языка OO.
Я хотел бы узнать несколько новых идей по улучшению производительности того, что я пытаюсь сделать.
У меня есть метод, который постоянно получает массив Object []. Мне нужно разделить Объекты в этом массиве по нескольким массивам (List или что-то), чтобы у меня был независимый список для каждого столбца всех массивов, которые получает метод.
Пример:
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]);
}
}
Примечание: для простоты я пропустил инициализацию объектов и прочего.
Код, который я показал выше, конечно же, медленный. Я уже попробовал несколько других вещей, но хотел бы услышать некоторые новые идеи.
Как бы вы сделали это, зная, что это очень чувствительно к производительности?
EDIT:
Я проверил несколько вещей и обнаружил, что:
Вместо использования ArrayList (или любой другой коллекции) я обернул массив Object [] в другой объект для хранения отдельных столбцов. Если этот массив достигает своей емкости, я создаю другой массив с удвоенным размером и копирую содержимое из одного в другое, используя System.copyArray. Удивительно (по крайней мере для меня) это быстрее, чем использование ArrayList для хранения внутренних столбцов ...