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의 호출 횟수를 줄여 성능을 크게 향상시킬 수 있다.
배열을 크기를 크게 사용해서 처리하는게 젤 빠르긴했는데 버퍼 크기를 늘리면 비슷해질것 같다.
'Language > JAVA' 카테고리의 다른 글
[Java] 생산자-소비자 문제 : wait(), notify()를 이용한 바 채우기 (0) | 2021.12.09 |
---|---|
[Java] 객체 직렬화 (0) | 2021.11.18 |
[Java] File 클래스를 이용해 ls 명령어 출력해보기 (0) | 2021.11.18 |
[Java] 6주차 수업 예제 13번, 14번, 15번 (0) | 2021.10.08 |
[Java] 5주차 수업 예제 8번, 14번 (0) | 2021.09.30 |