解决方案 »
- GlobalMemoryStatus的问题。新手上路多多指教谢谢
- memcpy()
- 如何屏蔽esc和enter键
- select * from table1 where substring......弱问题,高分值,在线等,马上结
- 如何在列表框中放多列的CheckBox?在线等!分不够可以再加!
- 刚刚那个问题,已经给分,现在再来个问题,看有没高手能回答我
- 哪里有好的《COM本质论》和《深度探索 C++ 对象模型 》下载?
- ###大虾请解释一下,这些宏是什么意思??
- vc和c++不兼容??
- CListBox 多选的记数器为什么不能在CLB_SELCHANGE 处理函数中减
- string作为message的wparam如何传递?
- 合成的mp4文件为什么会跳着播放,从10秒调到了12秒
typedef struct _RowColData
{
int row; //行
int col; //列
double Val; //数据
}RowColData, *LPRowColData;
再构造链表或是结构体数组操作的时候根据行列信息来搜索,不存在的值为0
计算结果也是不用存储数据为0的组
这样操作的结果就是效率降低,但是时间和空间总是矛盾的,只能是取折中
现在需要的是稀疏矩阵转换的逆过程,转换得到一个真正的稀疏矩阵。然后对所有的空点进行不同的插值,获得一个模拟的二维空间场。
可是这个逆变换的效率怎么提高呢?
现在才用了300M的空间,一个32位系统是2GB,最开辟一块大内存,计算完后,一次性写入磁盘。
如果需要先读文件再写文件,要把读写缓冲开大一些(几百MB)。
如果文件保存在NTFS文件系统中,可以创建稀疏文件,在写文件时,跳过不需要写入的片断。
不过,你现在这种情况不适合用文件映射。
系统不会立即把内存中的数据写入磁盘,可以通过FlushViewOfFile让系统立即回写。
不过,你现在这种情况不适合用文件映射。
[/Quot]
您说不用文件映射是不是需要把大文件拆分成许多的小文件呢还是直接进行文件读写的操作。
我觉得文件映射和直接进行文件读写应该没有多大差异吧,文件映射好歹操作起来还有点像内存操作呢。
文件映射只有在对文件的某一段区域进行大量重复读写时才会提高效率,对于大文件的一次性读写,用文件映射无法达到最佳效率,因为文件映射读写文件主要是由系统自动处理的,程序不能充分地进行控制。
举个例子,你可以自己验证一下:例如要复制一个10GB的文件(假设可用物理内存大于1GB),如果用文件操作每次从源文件连续读500MB,再连续写入目的文件,这样几分钟就可以完成;如果用文件映射方式,创建两个500MB的视图相互复制数据,估计可能你没有耐心等到整个文件复制完成。