writeは、指定されたファイルディスクリプタに、指定されたバイナリデータを書き込むUNIXシステムコール・・・。
readと同様に、writeも使い分けを考える必要がある・・・。
writeとfwriteで比較してみる・・・。
"ABCD"の4バイトデータをwriteで2048回書き込む・・・。
$ time ./write_1 BUFSIZ = 8192 write start write end real 0m0.049s user 0m0.001s sys 0m0.015s $
0.049秒・・・。
"ABCD"の4バイトデータをfwriteで2048回書き込む・・・。
$ time ./fwrite_1 BUFSIZ = 8192 fwrite start fwrite end real 0m0.005s user 0m0.000s sys 0m0.004s $
0.005秒・・・。
やはり、バッファリングしてでもfwriteのほうが、writeを1回しか呼ばないので速い・・・。
bufのサイズを819200とし、memsetですべて文字'A'で埋める・・・。
それをwriteで一気に書き出している・・・。
$ time ./write_2 BUFSIZ = 8192 write start write end real 0m0.006s user 0m0.000s sys 0m0.005s $
0.006秒・・・。
こちらも、819200バイトのbufをmemsetで'A'で埋めて、fwriteで書き出し・・・。
$ time ./fwrite_2 BUFSIZ = 8192 fwrite start fwrite end real 0m0.013s user 0m0.000s sys 0m0.007s $
0.013秒・・・。
今度は1回で書き出すwriteのほうが、内部でwriteで100回書き出すfwriteより速い・・・。
Sample/write_1.c at master · bg1bgst333/Sample · GitHub
Sample/fwrite_1.c at master · bg1bgst333/Sample · GitHub
Sample/write_2.c at master · bg1bgst333/Sample · GitHub
Sample/fwrite_2.c at master · bg1bgst333/Sample · GitHub