1
私はちょうどGo
のファイルシステム操作を勉強し始めました。書き込みランダムなファイルを実行するには、少なくとも2つの方法があるように思える:Go:Seek + Write対WriteAtパフォーマンス
// 1. First set the offset, then write data
f.Seek(offset, whence)
f.Write(data)
// 2. Write by offset in one step
f.WriteAt(data, offset)
三つの機能(Seek
、Write
、WriteAt
)のすべての異なるシステムコールを使用して実装されています:UnixシステムでWrite
はsyscall.Write
を経由して実装されていますWriteAt
はsyscall.Pwrite
です。
Seek+Write
は2つのシステムコールを実行しますが、WriteAt
は1つのシステムコールしか必要としませんので、パフォーマンスを向上させるためには2番目の方法を優先しますか? pread()
とpwrite()
が単一SYS-呼び出している間