2013-05-11 2 views
0

시퀀스 위로 슬라이드하는 슬라이딩 윈도우를 구현해야합니다. (1 : [0,1,2,3] 2 : [1,2,3,4], ...) 어느 것이 더 빠를까요? 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는 더 빨리 작동하는 것처럼 보인다. 그러나 왜? 난 .. 두 번째 aproach는 (n)이 나는 거대한 데이터베이스를 운영 할 필요가

O 생각 그 때문에 나는이 볼 필요가 ...

제조 월 제거 단계를 가정

+1

게시물을 편집하여 두 가지 코드 대안을 구성하십시오. 제거 단계가 둘 다인지 아닌지는 명확하지 않습니다. – EJP

+0

1 월 - 귀하의 질문/코드가 너무 잘 제시되지 않아 우리가 귀하의 이야기를 파악할 수없는 경우 귀하를 도와 드릴 수 없습니다. 제발 고쳐주세요. –

+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