profile image

L o a d i n g . . .

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class WritingPerformanceTest {
	// 버퍼스트림을 사용해서 성능향상 테스트
	public static void main(String[] args) {
		
		long start, end;
		final int FILESIZE = 1000*1000; // 약 1MB
		final int ARRAYSIZE = 10000;
		
		try {
			FileOutputStream fout = new FileOutputStream("tempfile");
			start = System.currentTimeMillis(); //현재 시간을 밀리초 단위로 가져옴
			for (int i =0; i<FILESIZE; i++) {
				fout.write((byte) i);
			}
			end = System.currentTimeMillis();
			fout.close();
			System.out.println(end-start);
			
			fout = new FileOutputStream("tempfile");
			byte[] arr = new byte[ARRAYSIZE]; // 10000 바이트
			start = System.currentTimeMillis();
			for ( int i =0; i<FILESIZE/ARRAYSIZE; i++) {
				fout.write(arr, 0, ARRAYSIZE);
			}
			end = System.currentTimeMillis();
			fout.close();
			System.out.println(end-start);
			
			fout = new FileOutputStream("tempfile");
			BufferedOutputStream bout = new BufferedOutputStream(fout);
			start = System.currentTimeMillis();
			for(int i =0; i<FILESIZE; i++) {
				bout.write((byte) i);
			}
			end = System.currentTimeMillis();
			bout.close();
			System.out.println(end-start);
			
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}
결과:
1797
1
11

 

버퍼를 사용하면 운영체제의 입출력 API의 호출 횟수를 줄여 성능을 크게 향상시킬 수 있다.

배열을 크기를 크게 사용해서 처리하는게 젤 빠르긴했는데 버퍼 크기를 늘리면 비슷해질것 같다.

복사했습니다!