"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
.
.
.
기타 등등..
요약:.
- Eclipse는 "B"와 완벽하게 호환됩니다.
- Netbeans에는 줄 바꿈 문제가 있어 해결할 수 있습니다("B") 뒤에 공간을 추가하지 않아도 됩니다.
네, 범인은 확실히 말을 잘 안듣고 있어요.두 프로그램을 테스트했을 때 NetBeans IDE 8.2는 다음과 같은 결과를 얻었습니다.
- 첫 번째 매트릭스: O 및 # = 6.03초
- 두 번째 매트릭스: 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%의 시간이 걸립니다.
언급URL : https://stackoverflow.com/questions/21947452/why-is-printing-b-dramatically-slower-than-printing
'itsource' 카테고리의 다른 글
SQL Chemy, to_sql을 사용하여 팬더와 MySQL 데이터베이스에 쓰기 (0) | 2022.09.27 |
---|---|
Larabel 5 응용 프로그램 키 (0) | 2022.09.27 |
도커 컨테이너 내의 mariadb grant 테이블:hostname 및 ip (0) | 2022.09.27 |
Python의 수업은 언제 사용해야 하나요? (0) | 2022.09.27 |
두 MySQL 테이블을 병합하려면 어떻게 해야 합니까? (0) | 2022.09.27 |