보통의 경우 파일을 처리할때

open보다는 fopen을 사용한다.


O_CREAT니 O_RDWR과 같은 옵션을 외우느니 그런 옵션이 내장되어 있어서

사용하기 편한 fopen을 사용한다.

습관의 차이일수도 있다.(보통은 open보다는 fopen을 먼저 접한다 )


그런데 가끔은 open을 사용해야하는 경우도 있다.


파일을 빈번히 열고 닫을 경우 fopen보다는 open이 속도가 빠르기 때문이다.


정말로 그런지 테스트를 한번 해보았다.


첫번째 파일은 test_open.c로

open, close만 10,000,000번 한다.

두번째 파일은 test_fopen.c는

fopen, fclose만 10,000,000번 한다.



테스트는 test_open한번 실행하고 test_fopen실행하는 식으로 총 5번 시간을 측정했다.

test_open  : avg 24.6/sec

test_fopen : avg 37.6/sec


open, close 함수가 fopen(fclose)함수에 비해 1.5배 정도 빠른것으로 보인다.



물론 open을 파일을 열었을 경우에는 read,write함수를 사용해야 하고 read, write함수를 효율적으로 사용하기 위해서는 한번에 읽어오는  page size를 알아야 하는 번거로움이 있다.

이 테스트에서는 이런 것들을 모두 배제하고 파일을 열고 닫는데 어느 정도 속도차이가 있는지에만 초점을 맞추어 테스트를 진행했다.





보너스 : open, close를 1억번 해도 결과는 같을까?

test_open : 3m54.256s

test_fopen :  5m35.421s



Posted by 고요한하늘
,