gpt4 book ai didi

performance - Go:Seek+Write 与 WriteAt 性能对比

转载 作者:IT王子 更新时间:2023-10-29 02:03:38 26 4
gpt4 key购买 nike

我刚刚开始研究 Go 的文件系统操作。似乎至少有两种方法可以执行随机文件写入:

// 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 系统上 是通过syscall.Write实现的并且 WriteAtsyscall.Pwrite里面。

由于 Seek+Write 执行两次系统调用,而 WriteAt 只需要一次系统调用,为了更好的性能,应该首选第二种方法吗?

最佳答案

seek()+read()seek() + write() 都是一对系统调用,而 pread()pwrite() 是单个系统调用。更少的系统调用 - 更高的效率。

你绝对可以选择 WriteAt

关于performance - Go:Seek+Write 与 WriteAt 性能对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41781840/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com