繁体   English   中英

加快创建和读取数据的速度

[英]Speed to create and read data

关于在C / C ++中创建和读取数据的速度,我有一些小问题:

=>如果我需要在任何类型的数组中填充数据(想像一个2048 * 2048数组),使用循环并填充每个单元格更快,然后从文件加载它? (不包括打开和关闭文件所花费的时间)。

=>如果数据在单独的文件中并可以读取,从原始文件读取数据是否需要花费相同的时间? (想象一下,我需要填充一个数组,最好是将该数组填充到主程序中,或者我可以从外部文件中读取它而不会丢失?(不包括打开和关闭文件的时间))

=>如果我需要复制大量数据,Memcpy仍然很快?

文件操作将比内存操作慢许多许多倍。

memcpy取决于编译器,但是是的,通常,它会更快地完成它,或者与不使用汇编就可以做到的一样。

If I need to fill data in a array of any type (think about a 2048*2048 array), using a loop and fill each cell is faster then loading it from a file? (excluding time spent to open and close the file).

当您不从文件中读取数据时,数据要填充到哪里? 但是通常,从文件读取非常慢。 当对主存储器的读取几乎是原子的时,对文件的相同操作的速度慢于1000倍或更多。 在实践中,始终避免不必要地从文件中读取数据。

Memcpy是否仍然需要复制大量数据?

是。 通常更快,取决于编译器和您的硬件。 因为memcpy使用某些特殊的CPU指令(例如SIMD (单指令-乘以数据)来提高性能,也许您的CPU没有该指令。 编译器仍然具有可比的此功能。

内存中操作比FILE IO操作快许多订单,但是您可以使用中途存储。

内存映射文件使用OS技术将文件内容直接映射到内存,而无需读取和复制每个字节。 然后可以正常读取/写入内存。 它是许多体系结构中虚拟内存的基础,因此经过高度优化和高性能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM