4

(我无法找到我的问题的明确答案,也许我使用了错误的搜索词)

我想用一个没有压缩或无损压缩的相机记录许多图像,在一个没有那么强大的设备上,只有一个固态驱动器。经过调查,我决定,如果有的话,压缩将是简单的 png 图像(这不是讨论的一部分)。鉴于这些限制,我希望能够以最大可能的频率从相机进行记录。瓶颈是(只有一个)硬盘驱动器速度。我想使用 RAM 进行排队,并使用少数可用内核来并行压缩图像,从而减少要写入的数据。

压缩数据后,如果我将所有字节流式传输到一个文件中,是否可以提高写入速度? MB)每个图像仍在最大磁盘带宽下工作?(或非常接近,例如 >90%)?

我不知道这是否重要,这将使用 C++ 及其库来完成。

4

1 回答 1

7

我的问题是“简单地”,如果通过将我的输出写入单个文件而不是许多 2MB 文件,我可以期待在使用固态驱动器时获得显着的好处。

有一个好处,不是很重要。固态驱动器的文件系统驱动程序已经知道如何将文件数据分布在许多不相邻的集群中,因此自己做也无济于事。需要在已包含文件的驱动器上安装大文件。通过分解它,您强制额外的写入也为这些段添加目录条目。

固态驱动器的类型很重要,但这通常已由驱动程序完成以实现“磨损均衡”。换句话说,故意将数据分散在驱动器上。这避免了闪存单元的磨损,在它们物理磨损和失效之前,您可以写入它们的次数有限。传统上只保证 10,000 次写入,它们已经变得更好了。你当然会练习这个。同样值得注意的是,闪存驱动器读取速度快但写入速度慢,这对您来说很重要。

将图像数据分解为单独的文件有一个显着的优势:更容易从驱动器错误中恢复。无论是由于灾难性故障,还是驱动器在您没有及时停止的情况下才装满容量。你不会失去整个镜头。但是对于从驱动器读取图像的任何程序来说都不方便,它必须将它们重新粘合在一起。这也是一个重要的设计目标,如果您使用非标准的未压缩文件格式使其太不切实际,或者传输速度太慢或总体上太不方便,那么它就不会经常被使用。

于 2013-10-17T11:42:17.443 回答