将39567865个无符号字符加载到RAM:有效方法

Loading 39567865 unsigned chars into RAM: Valid approach?

本文关键字:RAM 有效 方法 加载 39567865个 无符号 字符      更新时间:2023-10-16

我正在处理一个C++项目,需要快速访问字节值。我已经尝试了很多内存映射文件,数据的智能排序,这样只需要读取很少的数据,等等。我只是无法让它以足够快的速度可靠地工作。在某些情况下,文件中的磁盘访问和查找似乎是瓶颈。

我现在正在考虑将整个字节数据(无符号字符)加载到RAM中。但是,它是39567865个无符号字符。它在我的电脑上运行,但我希望它在所有电脑上都能运行。

有人能告诉我我的做法是否疯狂吗?换句话说:一个普通的软件(而不是在超级计算机上运行的某种科学方法)将如此多的数据加载到RAM中以快速访问它是有效的吗?

字符宽度为1字节,因此

39567865 / 1024 = 38,640 kb

这大约是37.7 Mb。你会没事的,除非你计划在RAM很少的嵌入式机器上工作。供参考:你正在工作的机器很可能有4-8 Gb的RAM,你的内存消耗大约是它的0.4%-0.8%。

在今天常见的Win32(或win64)机器上,将100M文件加载到内存中是完全公平的,甚至比其他选择更可取。

一般的答案取决于您设置的系统要求,以及程序的通常使用模式,如果它在几秒钟内以数十个副本的形式启动,可能会考虑其他方式。