【发布时间】:2019-09-18 19:55:59
【问题描述】:
对于通过 USB 传输数据并将其写入内存以供进一步处理,哪一个更有效(= 最快)实现:
- 从 USB 读取少量数据并多次重复写入内存。
- 从 USB 读取大量数据并将其写入内存。
【问题讨论】:
-
从历史上看,对于硬盘来说,读写底层硬件大小的块并在块边界处对齐是最好的。将数据写入硬件块的一部分有时需要读取整个块,更新内存缓冲区并将整个块写回。现代硬件和(设备驱动程序)软件努力减少这些与块相关的开销。
-
@AdrianHHH IO 开销呢? IO 开销是否超过内存写入开销?
-
@AdrianHHH 将数据写入硬件块的一部分有时需要读取整个块,更新内存缓冲区并将整个块写回。仍然如此。将四个字节写入使用 2048 字节块的磁盘,并且必须读取、修改整个块并将其写回磁盘。 现代硬件和(设备驱动程序)软件努力减少这些与块相关的开销。 而且它通常做得很好 - 但如果你想以或接近其设计限制运行系统,你可以'不要抽象,也不要忽略实际的设计。
-
你能用
mmap()吗? -
“高效”在什么意义上?潜伏?吞吐量?能源使用? USB设备磨损?
标签: c performance memory usb coding-efficiency