2012-10-24 4 views
2

2 천개 이상의 항목으로 ArrayList를 인쇄하려고합니다 (1에서 1000000 사이의 모든 소수를 찾아야 함). 프로그램의 끝에서, 나는이 메서드를 호출 : 이것은 단지 몇 백 항목으로 작동하지만ArrayList를 가장 효율적으로 인쇄하는 방법

println(myArrayList); 

를, 그것은 한 번 이상의 항목이있을 얻는 소수를 찾는 것보다 배열 목록을 인쇄하는 데 더 많은 시간이 소요 .

반복하는 것이 더 효율적입니까? 다른 수업을 사용 하시겠습니까?

+0

OK 문제는 내가 ACM ConsoleProgram 클래스 (교사가 라이브러리를 배우기를 원했음)를 사용하고 있다는 것이 었습니다. 표준 콘솔보다 훨씬 느리게 인쇄합니다. 일단 콘솔로 전환하면 제안한 모든 방법에 비해 훨씬 빨라졌습니다. – BritKnight

+0

답변을 수락하거나 의견을 제공해야합니다. – auselen

답변

0

아마도 반복하는 것이 더 효율적일 것입니다. printlnString을 많이 생성하고 연결된 가비지는 단지 String을 메모리에 저장하는 대신 직접 인쇄하여 피할 수있는 toString()을 수행합니다.

+0

나는 그것을 반복하고, 각 반복마다 인쇄를 시도했지만, 적합 및 시작으로 이동하고 시작하여 인쇄를 시작합니다. 결국, println (myArrayList);보다 3 배 이상 오래 걸립니다. 어쩌면 그 배열의 단지 거대한 크기는 반복을 문제로 만든다. – BritKnight

0

저는 StringBuffer가 더 효율적이고 빠른 방법으로 물건을 인쇄 할 수 있다고 믿습니다. 루프에 하나를 만들고 그 끝에 인쇄하십시오.

+0

내가 제안한 StringBuffer 접근 방식을 시도했지만 'println (myArrayList);보다 큰 이점을주지 못했다.' (XD가 실행될 때마다이 프로그램의 타이밍을 잡았습니다.) – BritKnight

0

콘솔에 인쇄하고 있습니까? 그렇다면 콘솔 작업은 다른 출력 작업 (파일, 소켓 등)보다 훨씬 느립니다. 이 속도의 차이는 인쇄하는 라인이 늘어날수록 분명 해집니다.

콘솔에 인쇄하는 것이 필요하다면 "속도 향상"을 할 수있는 일은 많지 않지만 파일로 인쇄하는 것이 훨씬 빠릅니다. 프로그램을 변경하여 파일로 인쇄하면 속도가 향상됩니다.

+0

저는 acm ConsoleProgram 클래스를 사용하고 있습니다. 그게 속도와 어떻게 관련이 있을지 모르겠습니다. – BritKnight

관련 문제