将39567865个无符号字符加载到RAM:有效方法
Loading 39567865 unsigned chars into RAM: Valid approach?
我正在处理一个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文件加载到内存中是完全公平的,甚至比其他选择更可取。
一般的答案取决于您设置的系统要求,以及程序的通常使用模式,如果它在几秒钟内以数十个副本的形式启动,可能会考虑其他方式。
相关文章:
- 欧拉项目#8答案是大以获得有效答案
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- 调整大小后指向元素值的指针unordered_map有效?
- 为什么是0;C++中的有效语句
- 最高有效数字侧的第N位
- GCC对可能有效的代码抛出init list生存期警告
- 有效地使用std::unordered_map来插入或增加键的值
- c++中O(n^(1/3))中一个数的除数的有效计数
- 使用无符号字符数组有效存储内存
- 自定义先决条件对移动分配运算符有效吗
- 为什么将值返回函数传递给重载=运算符对运算符函数有效,而对其他运算符无效
- 有哪些有效的方法可以消除一组 100 万个字符串>重复数据?
- 为什么这种直接初始化有效?(C++17)
- 递归函数有效,但无法记忆
- 在C++中初始化向量映射的最有效方法
- 如果变量名称不跟在 char* 后面,const char* 是否有效?
- 钳制迭代器是否有效
- Armadillo:有效的RAM稀疏分批插入
- 将39567865个无符号字符加载到RAM:有效方法
- 有效地将DNA碱基对数据存储在RAM中