не знает о том, как он реализован внутри
а да протупил, но скорость все ровно не поменялось(((
Можно попробовать запрофилировать, но, кажется, дело просто в медленном диске
да не диск норм, пк хороший Проблема в том что и ГитЛаб не принимает(((
ладно буду решать вопрос можно еще один совет
List<EventLTE> list = new ServiceChainEventLTE().executeEventLTE(readByteFile(in)); for (int i = 0; i < list.size(); i++) { listLTE.add(list.get(i)); list.remove(i); } Как можно оптимизировать? readByteFile(in) - читает поток возвращает массив байт List<EventLTE> list = new ServiceChainEventLTE().executeEventLTE формирует большой список на 112тыс объектов Копирую его в другой список для того чтобы прогнать его дальше по методу. А обратиться к этому списку не могу в который сразу все записывается Вопрос как можно ускорить копирование и удаление из 1ого списка если не удалять памяти пп
Может быть, List::addAll или просто new ArrayList<>(list) вместо цикла? Каждый List::remove вызывает копирование всего списка на 112 тысяч элементов, поэтому и получается долго. По этому сниппету сложно что-то более осмысленное сказать, слишком мало контекста
А какой list возвращается из executeEventLTE? Если это LinkedList, то list.get(i) будет долго выполняться. И в целом, можно ли дальше использовать сразу полученный лист без копирования элементов в новый лист?
нет нельзя в этом и проблемака( можно конечно но у меня тогда будет лист который содержит в себе лист
делал валится по памяти так как у меня образуется 2 листа по 112 тыс
В этом коде нет листа в листе. Ты получаешь список, перекладываешь все элементы в другой список и с этим другим производишь действия. Т.е. может быть, что listLTE переиспользуется где-то там дальше и тогда нужно обязательно в него скопировать элементы, но тогда это именно то место, которое надо оптимизировать: перестать перекладывать из одного листа в другой.
ну да конечно используется дальше listLTE это самое начало кода
Кажется, что копировать всё-таки не надо. И поэтому цикл не нужен и remove, и get(i) не нужны. В остальном, достоверно можно сказать только, если ты пошаришь весь код. Я могу посмотреть, если в личку зашлёшь.
Обсуждают сегодня