itsource

"B" 인쇄가 "#" 인쇄보다 크게 느린 이유는 무엇입니까?

mycopycode 2022. 9. 27. 23:54
반응형

"B" 인쇄가 "#" 인쇄보다 크게 느린 이유는 무엇입니까?

나는 2개의 매트릭스를 생성했다.1000 x 1000:

첫 번째 매트릭스:O그리고.#.
두 번째 매트릭스:O그리고.B.

다음 코드를 사용하여 첫 번째 매트릭스를 완료하는 데 8.52초가 걸렸습니다.

Random r = new Random();
for (int i = 0; i < 1000; i++) {
    for (int j = 0; j < 1000; j++) {
        if(r.nextInt(4) == 0) {
            System.out.print("O");
        } else {
            System.out.print("#");
        }
    }

   System.out.println("");
 }

이 코드를 사용하여 두 번째 매트릭스를 완료하는 데 259.152초가 걸렸습니다.

Random r = new Random();
for (int i = 0; i < 1000; i++) {
    for (int j = 0; j < 1000; j++) {
        if(r.nextInt(4) == 0) {
            System.out.print("O");
        } else {
            System.out.print("B"); //only line changed
        }
    }

    System.out.println("");
}

실행 시간이 크게 다른 이유는 무엇입니까?


댓글에 제시된 대로 인쇄만 가능System.out.print("#");걸린다7.8871단, 초수입니다.System.out.print("B");주다still printing....

예를 들어, 정상적으로 동작하고 있다고 지적받은 다른 분들과 마찬가지로 Ideone.com에 접속해 보니, 양쪽의 코드가 같은 속도로 동작하고 있습니다.

테스트 조건:

  • 이 테스트를 Netbeans 7.2에서 실행하여 출력을 콘솔로 전송했습니다.
  • 나는 사용했다System.nanoTime()측정용

단순한 추측은 당신이 문자 랩핑이 아닌 단어 랩핑을 시도하고 있는 단말기를 사용하고 있다는 것입니다.B말 그대로의 성격상#비단어 문자로요.즉, 회선의 끝에 도달하여 회선을 끊을 장소를 검색하면, 회선의 끝부분을 볼 수 있습니다.#거의 즉시 그리고 행복하게 그곳에서 깨집니다; 반면,B검색 시간이 길어지고 줄 바꿈 텍스트가 많아질 수 있습니다(백스페이스 출력, 줄 바꿈 문자를 덮어쓰기 위한 공백 출력 등 일부 단말기에서는 비용이 많이 들 수 있습니다).

하지만 그건 추측일 뿐이야.

Java 버전 1.8을 사용하여 Eclipse vs Netbeans 8.0.2에서 테스트를 수행했습니다.System.nanoTime()를 참조하십시오.

이클립스:

사건에서 같은 시간이 나왔어요 1.564초 정도요

넷빈:

  • # 사용: 1.536초
  • 'B' 사용: 44.164초

따라서 Netbeans의 콘솔 인쇄 성능이 저하된 것 같습니다.

더 많은 조사 후, 나는 문제가 Netbeans의 최대 버퍼의 줄 바꿈이라는 것을 깨달았다.System.out.println명령어)는 다음 코드로 표시됩니다.

for (int i = 0; i < 1000; i++) {
    long t1 = System.nanoTime();
    System.out.print("BBB......BBB"); \\<-contain 1000 "B"
    long t2 = System.nanoTime();
    System.out.println(t2-t1);
    System.out.println("");
}

시간 결과는 매 5회 반복을 제외하고 매 반복마다 1밀리초 미만이며, 시간 결과는 약 225밀리초입니다.(나노초 단위):

BBB...31744
BBB...31744
BBB...31744
BBB...31744
BBB...226365807
BBB...31744
BBB...31744
BBB...31744
BBB...31744
BBB...226365807
.
.
.

기타 등등..

요약:.

  1. Eclipse는 "B"와 완벽하게 호환됩니다.
  2. Netbeans에는 줄 바꿈 문제가 있어 해결할 수 있습니다("B") 뒤에 공간을 추가하지 않아도 됩니다.

네, 범인은 확실히 말을 잘 안듣고 있어요.두 프로그램을 테스트했을 때 NetBeans IDE 8.2는 다음과 같은 결과를 얻었습니다.

  1. 첫 번째 매트릭스: O 및 # = 6.03초
  2. 두 번째 매트릭스: O 및 B = 50.97초

코드를 자세히 보면 첫 번째 루프의 끝에 줄 바꿈을 사용했습니다.하지만 두 번째 루프에서는 줄 바꿈을 사용하지 않았습니다.두 번째 루프에 1000자로 된 단어를 인쇄합니다.그것은 말바꾸기 문제를 일으킨다.B 뒤에 단어 이외의 문자 " "를 사용하면 프로그램을 컴파일하는 데 5.35초밖에 걸리지 않습니다.또한 100개의 값 또는 50개의 값을 통과한 후 두 번째 루프에서 줄 바꿈을 사용하면 각각 8.56초와 7.05초밖에 걸리지 않습니다.

Random r = new Random();
for (int i = 0; i < 1000; i++) {
    for (int j = 0; j < 1000; j++) {
        if(r.nextInt(4) == 0) {
            System.out.print("O");
        } else {
            System.out.print("B");
        }
        if(j%100==0){               //Adding a line break in second loop      
            System.out.println();
        }                    
    }
    System.out.println("");                
}

또, NetBeans IDE 의 설정을 변경하는 것도 추천합니다.먼저 NetBeans Tools로 이동하여 Options를 클릭합니다.그런 다음 Editor를 클릭하고 Formating 탭으로 이동합니다.그런 다음 줄 바꿈 옵션의 아무 곳이나 선택합니다.프로그램을 컴파일하는 데 거의 6.24%의 시간이 걸립니다.

NetBeans 편집기 설정

언급URL : https://stackoverflow.com/questions/21947452/why-is-printing-b-dramatically-slower-than-printing

반응형