Golang で行数を効率的に決定する
Golang でファイルを操作するときの一般的なタスクの 1 つは、ファイルに含まれる行数を決定することです。ファイル全体をループするのは簡単な方法ですが、非効率になる可能性があります。より効率的な解決策には、bytes.Count 関数の使用が含まれます。
bytes.Count 関数を使用すると、バイト スライス内のバイト シーケンスの出現をカウントできます。この例では、ファイルのバイト データ内の改行文字の数 (n) をカウントしたいと考えています。最適化された行カウンターは次のようになります。
func lineCounter(r io.Reader) (int, error) { buf := make([]byte, 32*1024) // Larger buffer for faster performance count := 0 lineSep := []byte{'\n'} for { c, err := r.Read(buf) count += bytes.Count(buf[:c], lineSep) switch { case err == io.EOF: return count, nil case err != nil: return count, err } } }
このアプローチでは、bytes.Count 関数を利用し、バッファー サイズを最適化することで、ファイルのループ処理に伴うオーバーヘッドが最小限に抑えられ、パフォーマンスが大幅に向上します。
以上がGo ファイル内の行を効率的にカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。