본문 바로가기

언어/Java

성능 향상 스트림

프로그램이 입출력 소스와 직접 작업하지 않고 중간에 메모리 버퍼(buffer)와 작업함으로써 실행 성능 향상 가능

출력 스트림의 경우 직접 하드 디스크에 데이터를 보내지 않고 메모리 버퍼에 데이터를 보냄으로써 출력 속도 향상 가능

버퍼는 데이터가 쌓이기를 기다렸다가 꽉 차게 되면 데이터를 한꺼번에 하드 디스크로 보냄으로써 출력 횟수를 줄여준다.

입력 스트림에서도 하드 디스크로부터 직접 읽는 것보다는 메모리 버퍼로부터 읽는 것이 빠르다.

성능향상을 위해 내부버퍼를 사용함.
목적지로 직접 쓰는게 아니라 버퍼에 채우고 다 채워지면 한꺼번에 쓰기(자동으로 auto flush)
중간에 보내고싶으면 직접 flush
flush가 되면 버퍼가 클리어됨
버퍼를 쓰는 이유 : 하나씩 직접 쓰면 목적지/자원과 만나는 시간이 오래걸림, 메모리의 성능향상을 위해

 

※ System.out.println();의 out

System.out.println("Hello, world!");

System.out.println()의 out도 버퍼링이 적용된 출력 스트림입니다.

Java에서 System.out은 표준 출력 스트림을 나타냅니다. 이 스트림은 텍스트를 콘솔에 출력하는 데 사용되며, 기본적으로는 버퍼링이 적용되어 있습니다. 텍스트 기반의 출력을 콘솔에 바로 보내는 역할을 합니다. System.out.println()은 System.out에 문자열을 출력하는 메서드 중 하나입니다.

버퍼링이 적용된 출력 스트림은 데이터를 출력할 때 일시적으로 버퍼에 저장한 다음, 버퍼가 가득 차거나 명시적으로 버퍼를 비우는 명령이 전달될 때 한꺼번에 출력합니다. 이렇게 함으로써 작은 양의 출력이 여러 번 발생할 때 발생하는 입출력 작업의 수를 줄여 성능을 향상시킬 수 있습니다.

 

위의  코드는 문자열 "Hello, world!"를 콘솔에 출력하겠지만, 실제 출력은 버퍼에 저장되어 있으며,

적절한 시점에 버퍼가 비워지면서 출력이 이루어집니다.
만약 버퍼를 수동으로 비우려면 System.out.flush() 메서드를 호출하면 됩니다.

이 메서드를 호출하면 현재까지 버퍼에 저장된 내용이 모두 출력됩니다.

 

 JspWriter out;
= PrintWriter + BufferedWriter 의 역할

JspWriter는 JavaServer Pages (JSP)에서 출력을 생성하는 데 사용되는 인터페이스입니다.

이를 통해 JSP 페이지에서 웹 브라우저로 데이터를 보낼 수 있습니다.

JSP 페이지에서 사용되는 out은 JspWriter 인터페이스의 구현체입니다. 이것은 JSP 페이지에서 생성된 출력을 처리하고 웹 브라우저로 보내는 데 사용됩니다. JspWriter는 텍스트 기반의 데이터를 출력할 수 있는 기능을 제공하며, 내부적으로 버퍼를 사용하여 출력 작업을 관리합니다.

 

PrintWriter는 문자열 데이터를 출력하는 데 사용되는 클래스입니다. 주로 텍스트 기반의 데이터를 출력할 때 사용됩니다. JspWriter는 PrintWriter의 일부 기능을 제공하여 JSP 페이지에서 텍스트 데이터를 효과적으로 웹 브라우저로 출력할 수 있게 합니다. 예를 들어, 다음과 같이 PrintWriter를 사용하여 텍스트를 출력할 수 있습니다:

PrintWriter writer = response.getWriter();
writer.println("Hello, world!");

BufferedWriter는 출력 데이터를 버퍼에 쌓아둔 후에 한 번에 출력하는 클래스입니다. 이는 출력 작업을 더 효율적으로 만들어줍니다. JspWriter는 출력 데이터를 내부적으로 버퍼링하여 일괄 처리하여 성능을 향상시킵니다.
예를 들어, 다음과 같이 BufferedWriter를 사용하여 데이터를 버퍼에 쌓아 출력할 수 있습니다:

BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("output.txt"));
bufferedWriter.write("This is some data.");
bufferedWriter.close(); // Flushes the buffer and closes the writer.

JspWriter는 이러한 두 가지 클래스의 기능을 조합하여, JSP 페이지에서 생성된 출력을 효율적으로 처리하고 웹 브라우저로 보낼 수 있도록 지원합니다. JSP 페이지에서 out 객체를 사용하면 실제로는 JspWriter 인터페이스의 구현체가 되며, 이를 통해 텍스트 기반 데이터를 출력할 수 있습니다.

 

 

'언어 > Java' 카테고리의 다른 글

ThreadSleep  (0) 2023.08.16
멀티 스레드  (0) 2023.08.16
기본자료형과 참조형의 차이  (0) 2023.08.10
Product 예제 4  (0) 2023.08.09
필터스트림, 직렬화 예시  (0) 2023.08.09