读入优化
Posted 凤涅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读入优化相关的知识,希望对你有一定的参考价值。
来自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,代码如下:
- const int MAXN = 10000000;
- const int MAXS = 60*1024*1024;
- int numbers[MAXN];
- char buf[MAXS];
- void fread_analyse()
- {
- freopen("data.txt","rb",stdin);
- int len = fread(buf,1,MAXS,stdin);
- buf[len] = ‘/0‘;
- analyse(buf,len);
- }
以上是关于读入优化的主要内容,如果未能解决你的问题,请参考以下文章