`GFORTRAN_UNBUFFERED_ALL` — 모든 유닛의 I/O 버퍼링 끄기

GFORTRAN_UNBUFFERED_ALL — 모든 유닛의 I/O 버퍼링 끄기

작은 읽기·쓰기를 자주 하다 보면 버퍼가 오히려 발목을 잡을 때가 있어요. GFORTRAN_UNBUFFERED_ALL 환경 변수는 프로그램 전체의 I/O 버퍼링을 켜고 끄는 스위치예요.

출처: GFORTRAN_UNBUFFERED_ALL (The GNU Fortran Compiler)

본문

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를 참고하세요.