在两台WIN98下,为什么以下代码用Turboc2.0和VC++6.0编译后,程序执行的速度不同(用VC++编的要比用C编的慢十几倍,同时用C编写的程序在第一次的运行时间要比以后运行时间慢),能否将VC++下程序的执行速度提高到C下的执行速度?
#include "io.h"
#include "fcntl.h" int a=0,b;
int handle;
char workbufs[4096];
DWORD dr;
handle = open("H:\\20020101\\01izm146.ndx",O_RDONLY|O_BINARY);
/*注:H:\\20020101\\01izm146.ndx为另一台WIN98上的一个文件*/
for(a;a<30000;a++)
{
b=read(handle,workbufs,4096);
};
/*以上程序用于读取远程文件.*/
/*注:WIN98访问WIN98有这个问题,WIN98访问WIN2000不存在这个问题,如果是访问本地文件也不存在这个问题(包括WIN98访问WIN98和WIN98访问WIN2000)*/
#include "io.h"
#include "fcntl.h" int a=0,b;
int handle;
char workbufs[4096];
DWORD dr;
handle = open("H:\\20020101\\01izm146.ndx",O_RDONLY|O_BINARY);
/*注:H:\\20020101\\01izm146.ndx为另一台WIN98上的一个文件*/
for(a;a<30000;a++)
{
b=read(handle,workbufs,4096);
};
/*以上程序用于读取远程文件.*/
/*注:WIN98访问WIN98有这个问题,WIN98访问WIN2000不存在这个问题,如果是访问本地文件也不存在这个问题(包括WIN98访问WIN98和WIN98访问WIN2000)*/
VC要连接很多的MFC库,而C很单纯,不连接你没有Include的库,当然VC要比C慢了
第一次比第二次慢是因为你第一次从硬盘上调用的东西操作系统已经放到内存里了,你下次是直接从内存里面调用的,当然要快了。
我认为可能是这样:两种方式最终都要调用到CreateFile和ReadFile这两个函数,但有可能两种方式调用着两个函数时的参数有所不同而导致速度有所不同。
你把workbufs加大10倍,在比较一下速度,看看是否不同。