- 1 名前:デフォルトの名無しさん [2019/04/02(火) 11:23:37.62 ID:SQXqRaAc0.net]
- !extend:checked:vvvvv:1000:512
C言語の話題のみ取り扱います C++の話題はC++スレへ 質問には最低限の情報(ソース/コンパイラ/OS)を付ける 数行で収まらないソースは以下を適当に使ってURLを晒す https://paiza.io/ https://ideone.com/ codepad.org/ C11 www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf C99 www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf kikakurui.com/x3/X3010-2003-01.html C FAQ 日本語訳 www.kouno.jp/home/c_faq/ JPCERT C コーディングスタンダード https://www.jpcert.or.jp/sc-rules/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
- 596 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 01:46:59.05 ID:+xvLcOVEa.net]
- というか普通はバッファリングする関数ばっかりだが、自前でバッファ用意したいときもあるって話。
基本変わらんよたぶん。
- 597 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 01:47:43.41 ID:jVHVO/YL0.net]
- 確かに少ないな
と思ったんで2,700kbでやってみたらむしろ4秒長くなったぞ
- 598 名前:デフォルトの名無しさん [2019/05/21(火) 02:21:13.21 ID:Y+BS98b80.net]
- >>574
FILE * 経由で出力する printf() 等は内部でバッファリングしていてバッファがいっぱいになったらまとめて出力する(出力先が端末の場合は行単位で出力する)。 そのバッファを自分で指定した領域を使わせるか、またはなしにできるのが setbuf()。更に自由に大きさやモードも指定したいなら setvbuf() を使う。 バッファリングに関して考慮しなくても良い入出力をする場合は read(), write() で行う。この場合は全くバッファリングされないので少ないバイト数の入出力が多いと遅くなる。 それと printf() のようなフォーマットを考慮した出力はないので必要なら自作する。
- 599 名前:デフォルトの名無しさん [2019/05/21(火) 02:26:07.71 ID:Y+BS98b80.net]
- >>576
open()してwrite()で1バイトづつ書くのとまとめて書くのとではバイト数によっては大幅に違いが出ると思う。環境依存ではあるが。
- 600 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 03:47:59.45 ID:jVHVO/YL0.net]
- >>581
大きなファイルの入出力を高速化したい時はsetbuf(fp,buf) バッファリング無しにしてバッファをフラッシュするタイミングを順番に逐一実行させたい時はsetbuf(fp,NULL) みたいな感じでええんかな?
- 601 名前:デフォルトの名無しさん [2019/05/21(火) 03:58:34.93 ID:Y+BS98b80.net]
- >>582
setvbuf()で自分でバッファの大きさ決めてしまった方が良いかも。
- 602 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 04:24:32.31 ID:zmxtmgNI0.net]
- 既出かもしれませんがconstがjavaのfinalと違うと知りました。どう違うのでしょうか?c初心者です
|

|