创建和读取数据的速度
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 操作快许多顺序,但您可能能够利用半途而废的房子。
内存映射文件使用操作系统技术将文件的内容直接映射到内存,而无需读取和复制每个字节。然后,您可以正常读取/写入内存。它是许多架构中虚拟内存的基础,因此具有高度优化和高性能。
相关文章:
- 防止主数据类型C++的隐式转换
- 用于访问容器<T>数据成员的正确 API
- 使用来自串行端口的字符串数据来操作振镜扫描仪在更高的速度下会出错
- 在不减慢线程速度的情况下保存大量数据
- 在 Ubuntu 中解析数据的速度比 Windows 10 快
- 编译器优化如何影响数据加载速度
- 仅关心速度时,如何存储二进制数据
- 将数据保存在std :: vector或.txt文件中的速度更快
- 如何保存两个相机的数据,但不影响它们的图片采集速度?
- 对齐数据:速度取决于恒定数据读取的相对采样大小和采样频率
- 处理数据的方法,速度是我处理速度的两倍
- 我是否也应该传递类成员数据作为速度的参考
- c++是否有一个默认的数据类,用于以合理的速度对基于索引的访问进行排序
- QTcpSocket每~0.5s才读取一次数据,即使是非常小的数据包,任何方法都可以加快速度
- 提高通过 ctypes 将数据从 Python 传递到 C(++) 的速度
- 如何使用c++在Windows上提高读取数据的速度
- 对不同数据结构的速度/内存使用估计
- 将原始mono8数据转换为PNG时,加快PNG++的速度
- 创建和读取数据的速度
- 通过引用c++传递基本数据类型的速度优势