`GFORTRAN_UNBUFFERED_ALL` — 모든 유닛의 I/O 버퍼링 끄기
GFORTRAN_UNBUFFERED_ALL — 모든 유닛의 I/O 버퍼링 끄기
작은 읽기·쓰기를 자주 하다 보면 버퍼가 오히려 발목을 잡을 때가 있어요. GFORTRAN_UNBUFFERED_ALL 환경 변수는 프로그램 전체의 I/O 버퍼링을 켜고 끄는 스위치예요.
본문
GFORTRAN_UNBUFFERED_ALL 환경 변수는 모든 I/O가 버퍼링 없이(unbuffered) 동작할지 제어해요. 첫 글자가 'y', 'Y', '1'이면 모든 I/O가 버퍼링 없이 동작해요. 이 경우 작은 순차 읽기·쓰기는 느려져요. 첫 글자가 'n', 'N', '0'이면 I/O가 버퍼링돼요. 이것이 기본값이에요.
$ GFORTRAN_UNBUFFERED_ALL='y' ./a.out
버퍼링을 끄면 매번 곧바로 시스템에 전달되기 때문에 실시간으로 출력이 보이는 장점이 있지만, 그만큼 I/O 호출이 잦아져 작은 데이터를 다룰 때는 성능이 떨어져요. 필요한 상황에서만 켜는 게 좋아요.
더 알아보기
- 미리 연결된(preconnected) 유닛만 버퍼링을 끄고 싶다면
GFORTRAN_UNBUFFERED_PRECONNECTED를 써요. 이 변수보다 범위가 좁아요. - 버퍼 크기를 직접 조절하고 싶다면
GFORTRAN_FORMATTED_BUFFER_SIZE,GFORTRAN_UNFORMATTED_BUFFER_SIZE를 참고하세요.