Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 创建和读取数据的速度_C++_C_Performance_Memory - Fatal编程技术网

C++ 创建和读取数据的速度

C++ 创建和读取数据的速度,c++,c,performance,memory,C++,C,Performance,Memory,关于在C/C++中创建和读取数据的速度,我有一些小问题: =>如果我需要在任何类型的数组中填充数据(想想2048*2048数组),使用循环并填充每个单元格比从文件中加载更快?(不包括打开和关闭文件所花费的时间) =>如果将数据保存在单独的文件中并读取,则从原始文件中读取数据的时间相同吗?(假设我需要填充一个数组,最好在主程序上填充该数组,否则我可以从外部文件中读取而不会丢失?(不包括打开和关闭文件的时间)) =>如果需要复制大量数据,Memcpy仍然很快?文件操作将比内存操作慢很多倍 memcp

关于在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).
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可能没有。编译器仍然有此函数用于比较

当您不从文件中读取数据时,您需要在哪里填写数据?但一般来说,从文件读取速度非常慢。当主存上的读取几乎是原子性的时,对文件执行相同的操作的速度要慢于1000倍或更多。实际上,如果没有必要,总是要防止从文件中读取

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


对。通常速度更快,这取决于编译器和硬件。因为
memcpy
使用一些特殊的CPU指令来提高性能,例如
SIMD
(单指令-乘法数据),而您的CPU可能没有。编译器仍然有此函数用于比较

内存中的操作比文件IO操作快很多,但您可能可以利用中间环节


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

内存中的操作比文件IO操作快很多个数量级,但您可能能够利用中间环节


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

memcpy
这样的东西可以很快,但是
memcpy
一次只运行一个字节,所以像
std::copy
这样的东西在某些情况下可能会更快,而且速度可能不会慢。请在尝试优化之前评测您的代码。。。只有这样,您才能知道诸如memcpy或文件操作的速度对于您的操作来说是否太慢像
memcpy
这样的操作可能会很快,但是
memcpy
一次只做一个字节,所以在某些情况下像
std::copy
这样的操作可能会更快,而且速度可能不会慢。请在尝试优化之前评测您的代码。。。只有这样,您才能知道memcpy或文件操作的速度对于您的操作来说是否太慢