2013-05-11 6 views
0

Мне нужно реализовать скользящее окно, которое скользит по последовательности. (1: [0,1,2,3] 2: [1,2,3,4], ...) Какой может быть aprove быстрее? 1.Java List.SubList() Сравнение производительности

for each step i; {List=wholeList.sublist(i,i+windowlen)} 

или 2.

List window=wholeList.sublist(0,window); 
    for each i{ 
    window.remove(0); 
    window.add(i+windowlen); 

}

?

Я измерил время с помощью system.currtime bla .. + -std SubLists, похоже, работает быстрее .. но почему? я думаю, что второй является O Подход (п)

мне нужно работать огромные базы .. для этого мне нужно, чтобы посмотреть на это ..

MFG Jan

+1

Измените свое сообщение, чтобы отформатировать две альтернативы кода. Неясно, является ли этап удаления частью обоих или нет. – EJP

+0

Jan - мы не можем вам помочь, если ваш вопрос/код так плохо представлен, что мы не можем понять, о чем вы говорите. Исправьте это, пожалуйста. –

+1

В дополнение к вышесказанному, я хотел бы отметить, что бессмысленно говорить о производительности структур/алгоритмов данных Java, представленных в терминах абстракций интерфейса. Вы должны упомянуть фактические классы. Они имеют решающее значение. –

ответ

1

Предполагая шаг удалить только часть шаг 2, они не эквивалентны, поэтому их сравнение бессмысленно. Второй изменяет как сустейн, так и основной список. Я сомневаюсь, что (2) даже сработает. Я не вижу никаких причин идти дальше (1).

+0

Почему базовый список изменяется, если я пишу значения из него в другом списке .. или я должен сначала создать начальный список, добавив в окно «window-list» окно windowlen-many ... возможно, поэтому это занимает так много времени. в любом случае я должен попытаться работать с массивами .. Кажется, что я действительно не понимаю подписок. Для этого код был очень кратким. –

+0

'subList' - это просто окно в исходный список, и его изменение изменит исходный список. –

+0

Потому что это то, что он говорит в [Javadoc] (http://docs.oracle.com/javase/7/docs/api/java/util/List.html#subList (int,% 20int)): 'Возвращенный список поддерживается этим списком, поэтому неструктурные изменения в возвращенном списке отражаются в этом списке и наоборот ». – EJP