我正在开发一个C ++项目,我需要快速访问字节值。 我已经对内存映射文件进行了大量实验,对数据进行了智能排序,因此只需要很少阅读,等等。 我只是无法让它快速可靠地工作。总有一种情况是文件中的磁盘访问和搜索似乎是瓶颈。
我现在正在考虑将整个字节数据(无符号字符)加载到RAM中。 但是,它是39567865个未签名的字符。它适用于我的计算机,但我希望它可以在所有计算机上运行。
有人可以告诉我,我的方法是否疯狂?换句话说:它对于一个通用软件(不是在超级计算机上运行的某些科学方法)来加载这么大量的数据到RAM中以便快速访问它是有效的吗?
答案 0 :(得分:2)
字符宽度为1个字节,所以
39567865 / 1024 = 38,640 kb
这大约是37.7 Mb。你会没事的,除非你打算在RAM很少的嵌入式机器上工作。供参考:您正在使用的机器最有可能具有4-8 Gb的RAM,您的内存消耗约为0.4%-0.8%。
答案 1 :(得分:1)
在今天通常的Win32(或win64)机器上将100M文件加载到内存中是完全公平的,甚至比替代品更受欢迎。
一般的答案取决于您设置的系统要求,以及该程序的常用使用模式,如果它在几秒钟内以数十个副本启动,可能会考虑其他一些方式。