2017-01-21 30 views
1

我剛剛開始研究Go的文件系統操作。好像至少有兩種方法來執行隨機文件中寫道:前往:尋求+寫入vs寫入性能

// 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) 

所有的三種功能(SeekWriteWriteAt)配合使用不同的系統調用來實現:在Unix系統Write通過syscall.Write實施而WriteAt裏面有syscall.Pwrite

由於Seek+Write執行兩個系統調用,而WriteAt只需要一個系統調用,爲了更好的性能,第二個方法應該是首選嗎?

回答

2

seek() + read()seek() + write()均爲對SYS-呼叫而pread()pwrite()和是單SYS-呼叫。減少系統調用 - 提高效率。

你可以肯定地去WriteAt