私のタスクは非常に単純です。Linux 上の C++ で大きなファイルを読み取って解析します。次の 2 つの方法があります。
バイトごとに解析します。
while(/*...*/) { ... = fgetc(...); /* do something with the char */ }
バッファごとに解析します。
while(/*...*/) { char buffer[SOME_LARGE_NUMBER]; fread(buffer, SOME_LARGE_NUMBER, 1, ...); /* parse the buffer */ }
これで、バイトごとの解析が簡単になりました(バッファがどれだけいっぱいかなどのチェックはありません)。しかし、大きな断片を読む方が効率的だと聞きました。
哲学とは何ですか?カーネルのタスクを「最適な」バッファリングしているので、呼び出したときにすでにバッファリングされていますfgetc()
か? それとも、最高の効率を得るためにそれを処理することをお勧めしますか?
また、すべての哲学とは別に、ここでの Linux の現実は何ですか?