自己写了一段测试程序,比较c++ IO读和c语言的IO读的效率:
long tickcount = GetTickCount();//取得系统启动后的时间(miliseconds)
int k = 0;
cout << "For c API " << endl;
for (int i = 0; i < 10000; ++i)
{
FILE* f = fopen("c://temp//test.txt", "rb");
if (NULL != f)
{
if (fseek(f, 0, SEEK_END) == 0)
{
int length = ftell(f);
fseek(f, 0, SEEK_SET);
char* p = (char*)malloc(length*sizeof(char) + 1);
if (p != NULL)
{
fread((void*)p, length, 1, f );
p[length] = '/0';
// cout << p << endl;
}
free(p);
}
fclose(f);
k++;
}
}
long newtickcount = GetTickCount();
cout << "Repeated times: " << k << endl;
cout << "time costed" << newtickcount - tickcount << endl;
tickcount = GetTickCount();
cout << "for c++ API" << endl ;
int j = 0;
for (int i = 0; i < 10000; ++i)
{
ifstream f;
f.open("c://temp//test.txt", ios_base::in | ios_base::binary | ios_base::ate);
if (f.good())
{
int size = f.tellg();
char* p = (char*)malloc(size*sizeof(char) + 1);
f.seekg(ios_base::beg);
if (p != NULL)
{
f.read(p, size);
p[size] = '/0';
free(p);
}
f.close();
j++;
}
}
newtickcount = GetTickCount();
cout << "Reoeated times " << j << endl;
cout << "Time costed" << newtickcount - tickcount << endl;
结果显示两者效率相当。可见c++的效率还是很高的。
 
                   
                   
                   
                   
                             
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   591
					591
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            