我正在使用C#在Hololens中记录屏幕。我正在创建100帧的小型视频,由于RAM不足以仅编写一个大型视频,因此我打算分别编写它们。 在性能方面哪个更好?
创建视频并异步写入它们,还是创建一个同步写入视频的工作队列?
答案 0 :(得分:1)
我将创建一个工作队列,并且只允许1个(后台)线程同时写入同一物理磁盘。
如果您对旋转的磁盘使用多个线程来执行此操作,则每个线程将争夺访问权限,从而导致大量不必要的磁盘搜索并在线程/文件之间切换。
平均而言,磁盘寻道约为10毫秒(至15毫秒)。在同一时间,可能会写入额外的兆字节。
因此,对于旋转磁盘,从多个线程进行写入将永远不会更快(但可能会更慢,具体取决于缓冲/缓存)。
对于SSD,可以进行一些速度改进-但总带宽最大。因此,如果要写入的数据已准备好在内存中,则从单个线程进行的写入应接近可用的SSD带宽。