%v", time.Since(t0))
}
func main() {
write()
time.Sleep(time.Hour)
}
结果仔细一看不对, 400M写入不论是 SSD...还是HDD, 都是1s不到, 这不符合预期, 想了一下, 应该是磁盘缓存的原因, 相当于并没有实际写入到磁盘,而是缓存在内存中
那么怎么办呢, 磁盘缓存肯定是有一个极限的, 可能几百M或者1/2G, 不能再多了..., 上面黑色的是固态, 下面的蓝色部分是机械
然后到Ubuntu上测试, 发现上面挂载的 Samsung SSD 960 EVO 250GB 没有问题,持续写入4G内容, 速度全程都是在 2-5ms/4M...写完这篇文章后, 留着一个关于系统磁盘缓存的问题, 网上查了一下, 发现其实我的第一段测试代码有一个比较好的优化方案, 只需要调用os.File.Sync()就可以了, 如下:
f.WriteString...(str)
f.Sync()
它会要求系统立即将文件的缓存进行持久化,写入到磁盘…加上sync()之后测试, 结果也符合预期.