在下编一程序,处理数据巨多,内存不够用。由于用户对处理速度要求比较苛刻,考虑的办法是:使用虚拟内存。
具体情况是这样,程序维护一系列Measurement类的对象,用一个叫MeasurementList的类来管理。程序可以放20个使用频率高的Measurement在内存里面,其余的写入虚拟内存。当用户使用的Measurement不在内存里时,则将该Measurement从虚拟内存中读入,再在MeasurementList中删除一个使用可能性最低的Measurement,如有修改则将其重新写入虚拟内存。
目前的主要问题是,如果将Measurement中分散于各段内存中的数据收集在一块连续的内存中,以便一次写入虚拟内存。这样做的好处是:对虚拟内存的读写比较快,从而加快程序的处理速度。
注意:Measurement里面的成员变量不是简单的原型数据,其成员变量有其他类的对象,有指针,还有序列(Array)等等。
现在的做法,就是对Measurement里面的成员一个个读写,一层层的往下读写。
不知VC里面是否有这样处理功能的类,或者,各位大虾有更好的处理办法,请不吝赐教!
具体情况是这样,程序维护一系列Measurement类的对象,用一个叫MeasurementList的类来管理。程序可以放20个使用频率高的Measurement在内存里面,其余的写入虚拟内存。当用户使用的Measurement不在内存里时,则将该Measurement从虚拟内存中读入,再在MeasurementList中删除一个使用可能性最低的Measurement,如有修改则将其重新写入虚拟内存。
目前的主要问题是,如果将Measurement中分散于各段内存中的数据收集在一块连续的内存中,以便一次写入虚拟内存。这样做的好处是:对虚拟内存的读写比较快,从而加快程序的处理速度。
注意:Measurement里面的成员变量不是简单的原型数据,其成员变量有其他类的对象,有指针,还有序列(Array)等等。
现在的做法,就是对Measurement里面的成员一个个读写,一层层的往下读写。
不知VC里面是否有这样处理功能的类,或者,各位大虾有更好的处理办法,请不吝赐教!
用户在使用软件的时候,不停的增加数据,而程序不停的new出新的对象,只是在程序结束的时候,才将这些对象删除掉。难道用new申请的内存不是常驻的,难道操作系统会自动将某些数据写入虚拟内存么?据我观察,不是这样的。不然,我们的软件不会因为数据多,而出现内存异常。当然,我们的数据再多,也不会超过几百M,虚拟内存应该够使的。
将数据写入文件,从文件中读写,将new出的对象及时删除,是一种办法,但是,这样做无法满足用户对速度的要求。一个几十M的ini文件,从里面找出一段来读写,其速度相对较慢。如果频繁读写,等待时间较长,用户不答应。没办法,给老外做东西,人家要求高,我们得尽量解决的完美一点。
我提出这个问题,想请大家讨论,请高手指点。我们做程序的,如果不遇到挑战,不去接受挑战,恐怕难以进步。我们的创造性,也恐怕大多在于用较好的办法解决技术难题吧。