现在想改进读写磁盘的效率。
#define MAX_SIZE 0x10000 //64K
UCHAR WriteBuf{MAX_SIZE];
如果1G的文件,每次只读64K,1G/64K = 16*1024 次
每次读个64M,1G/64M = 16 不知道Buffer最大可以申请多少,或者说多大才合适?
#define MAX_SIZE 0x10000 //64K
UCHAR WriteBuf{MAX_SIZE];
如果1G的文件,每次只读64K,1G/64K = 16*1024 次
每次读个64M,1G/64M = 16 不知道Buffer最大可以申请多少,或者说多大才合适?
解决方案 »
- 一个小问题:如何解决这个错误,具体请看:error C2039: 'classCButtonST' : is not a member of 'CButtonST'
- 如何利用钩子重画ScrollView的滚动条??(急)
- 如何解决Edit控件显示乱码?
- 急救!!VC++如何上路?高手、英雄请进!!
- 我的头文件放在一个文件夹下
- CppUnit在嵌入式平台上如何用?
- 求一个简单控件的实现
- 请问出现如下异常如何解决?
- 有人愿意收我这个学生吗?
- IDL中import另外一个IDL,总是报错,提示接口结构重定义
- ITypeInfo中的哪个方法能得到类型库中函数的DISPID?
- stl 容器能不能动态创建?
如果是用数组那么空间是按栈的大小来分的,进程给每个函数分配1M内存,理论说你如果在函数内只定义char[]数组,那么最多可以分1M。
如果是new出来的,系统为每个进程分配2G的空间(我没记错的话是这个数),理论上说你的进程什么也不干,那么能分出小于2G来。
一般硬盘都有一定的缓存,比如8M。那么你的内存缓存建议 4*8MB,或许这么大都不用,2*8MB就好了。
应该是小于1M,LZ不要那么可丁可毛儿啊!
程序代码:
typedef struct InvertIndex
{
int ID;
struct InvertIndex* next;
}* PinvertIndex;PinvertIndex* invertIndex=new PinvertIndex[300000];//共动态申请1.2M空间int main()
{
if(invertIndex!=NULL)
{
invertIndex[250000]->ID=100;
}
return 0;
}