登录
首页 >  Golang >  Go问答

大文件的频繁读写操作会导致写入速度受影响吗?

来源:stackoverflow

时间:2024-02-24 22:27:20 318浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《大文件的频繁读写操作会导致写入速度受影响吗?》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

我需要加快下载大文件的速度,为此我使用了多个连接。我使用的是一个可以访问磁盘的 goroutine,它使用通道从多个 goroutine 接收数据,正如我在这里建议的那样。

    file, _ := os.Create(filename)
    down.destination = file
    for info := range down.copyInfo {
        down.destination.Seek(info.start, 0)
        io.CopyN(down.destination, info.from, info.length)
        }
    }

问题是,在大文件上重复使用查找时,似乎会使操作变慢。当 info.length 较大时,它必须寻找的次数较少,并且似乎完成工作的速度更快。但我需要使 info.length 更小。有没有办法让搜索更快?或者我应该将每个部分下载到单独的临时文件并最后连接它们?


解决方案


查找本身不执行任何 I/O,而只是设置文件中的位置以供下一次读取或写入。因此,搜索次数本身可能并不重要。这也可以通过添加虚拟搜索来轻松测试,无需任何后续读取或写入操作。

问题可能不是寻道次数,而是写入操作次数。对于许多小片段,与一些大片段相比,需要更多的 I/O 操作来写入数据。并且每个 I/O 操作都有很大的开销。还有系统调用本身的开销。如果片段未在底层存储的块边界上对齐,则可能会产生开销。并且旋转磁盘定位到实际扇区可能会产生开销。

理论要掌握,实操不能落!以上关于《大文件的频繁读写操作会导致写入速度受影响吗?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>