티스토리 뷰
정말 오랜만이네요. 요즘 정말 치열하게 회사생활을 하고 있습니다.
수많은 테스트 케이스 작업부터 UML 작업까지 나날이 지쳐가던 중, 오랜만에 개발업무를 진행했고
정말 재밌게 회사생활 중 입니다! 잡담은 여기까지 할게요.
다름이 아니라 요즘들어서 알고리즘과 관련된 공부를 다시 시작하고 있습니다. 물론 하나도 풀지 못했어요.
그래서 정말 기초로 돌아가서 시작하려 합니다. 여러분들도 Hello World 출력하던 때가 기억나시나요?
처음 사용할때는 정말 간단하게 컴퓨터에 Hello Wolrd가 출력된다는 사실 만으로도 신기했던것 같습니다.
일반적으로 저희가 Hello Wolrd를 출력하고 싶을 때는 아래와 같은 코드를 씁니다.
public class Test {
public static void main(String[] args){
System.out.println("Hello World!");
}
}
저도 이 정도만 알아두면 Java에서 별도의 출력방식을 알아둘필요 없다고 생각했습니다.
하지만 해당 방식은 가장 기초적이고, 간편한 방식이지만 만약 효율적인 프로그램을 지향하신다면 좀 더 속도가 빠르게 만들 수 있습니다.
그 방식으로는 BufferedWrite를 통해서 코드를 작성하는 것 입니다.
BufferedWrite가 기본적인 Print 문 보다 좋은 이유는 속도에 있습니다. 간단하게 말하면 System.out.print 같은 경우 외부에서 문자열을 가져오기 때문에 상대적으로 느린 반면, BufferedWrite는 버퍼에 저장되어있는 문자열을 바로 불러오기 때문에 속도면에서 차이가 납니다.
그 동안 기초적인 출력문도 효율적으로 작성하지 못했던 걸 깨닫고 나니 머리가 띵했습니다.
물론 대규모 데이터가 아닌 경우에는 사람이 체감할 정도의 속도의 차이가 없지만, 출력을 여러번 해야하거나
데이터 규모가 클 경우에는 어떤 경우에도 Print문보다 BufferedWrite가 속도면에서 뒤쳐지는 일은 없습니다.
#How To Use?
bufferedWrite을 사용하는 방법은 간단합니다. 아래의 코드처럼 BufferedWriter를 선언하고, bw에 출력할 문자열을 쓰기만 하면 됩니다. 그뒤엔 flush를 통해서 buffer에 저장된 모든 문자열을 출력하고, 마지막으로 close를 통해서 더 이상 수행할 작업이 없음을 표시하면 됩니다.
import java.io.*;
public class Test {
public static void main(String[] args){
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write("Hello Wolrd!")
bw.flush();
bw.close();
}
}
해당 방식은 특히 알고리즘 문제에서 많이 사용된다고 합니다. 이유는 알고리즘 문제는 대부분 실행시간 제한이 있기 때문에, 효율적으로 코드를 짜지 않으면 대부분 타임아웃이 되기 때문입니다.
Scanner같은 경우에도 같은 맥락으로 bufferedReader를 사용하는게 속도면에서 유의미한 차이를 보입니다.
오늘 소개해드릴 내용은 여기까지 입니다. 차근차근 알고리즘과 관련된 글을 포스팅 하도록 할게요!
'웹 프로그래밍 > JAVA' 카테고리의 다른 글
[JAVA] 좌충우돌 주소지 정규식 -1- (1) | 2022.05.24 |
---|---|
[JAVA] 주소지 마스킹 처리 (0) | 2022.05.17 |
Class상속의 이해2 + 오버라이딩 (0) | 2021.02.27 |
Class의 상속관계(JAVA) (0) | 2021.02.27 |
3차원배열을 활용한 반 점수 출력 (0) | 2021.02.02 |
- Total
- Today
- Yesterday
- docker
- kafka
- consumer
- MSA
- 운동일기
- 오늘저녁 삼겹살
- zipkin
- rabbitmq
- Spring + ELK
- Logstash to ElasticSearch
- elasticSearch
- Gateway
- springcloud
- Feign
- MariaDB
- 빅-오
- 운동
- JWT
- UserService
- config
- Kafka Connect
- LoadBalancer
- git
- ACTUATOR
- Logstash 활용
- 루틴기록
- github
- producer
- prometheus
- 미래의나에게동기부여
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |