首页 > 代码库 > 读入优化

读入优化

来自http://www.2cto.com/kf/201302/190586.html        

在数据量特别大,比如需要输入或者输出1000万个整数的时候,scanf和printf就会变得非常慢,然而getchar和putchar函数很快,所以我们需要用其来优化读入与输出。

        读入优化:
[cpp]  
// 优化前读入1-10000000:3.176秒  
// 优化后读入1-10000000:1.232秒  
  
void scan( )  
{  
    k = num = 0, bit = 1;  
    while( ( ch[++num] = getchar( ) ) != 32 );  
    num--;  
    while( num ) k += ( ch[num--]-48 )*bit, bit *= 10;  
}  
 
       输出优化:
[cpp]   www.2cto.com
// 优化前输出1-10000000:4.336秒  
// 优化后输出1-10000000:1.897秒  
  
void print( int k )  
{  
    num = 0;  
    while( k > 0 ) ch[++num] = k % 10, k /= 10;  
    while( num )   
        putchar( ch[num--]+48 );  
    putchar( 32 );  
}  
来自http://blog.csdn.net/shifuwawa/article/details/5811397

把整个文件读入一个字符串最常用的方法是用fread,代码如下:

[cpp] view plain copy
 
  1. const int MAXN = 10000000;  
  2. const int MAXS = 60*1024*1024;  
  3.    
  4. int numbers[MAXN];  
  5. char buf[MAXS];  
  6.    
  7. void fread_analyse()  
  8. {  
  9.     freopen("data.txt","rb",stdin);  
  10.     int len = fread(buf,1,MAXS,stdin);  
  11.     buf[len] = ‘/0‘;  
  12.     analyse(buf,len);  
  13. }   

读入优化