Several Topics On C++ fstream

本文通过实际测试比较了使用 getline 函数与运算符 >> 在处理大量数据时的运行时间差异。实验表明,在处理包含超过一千万条边的图数据文件时,尽管 getline 方法涉及更多操作步骤,但其总运行时间仅为 >> 运算符的一半左右。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Author: YuMaNzI

2014/06/28 1. Running-time Comparison of getline and operator >>

To Be Continue.


1. Running-time Comparison of getline and operator >>

I use fstream to read a graph, which is maintained in a file. Each line of the file consisting two integers, representing a directed edge. The graph contains more than 10 million edges.

	for (int i = 0; i < edgeC; i++) {
		/* operator >>	*/
		input >> s[i] >> t[i];
		/* getline		*/
		getline(input, line);
		int space = line.find(' ');
		s[i] = stoi(line.substr(0, space));
		t[i] = stoi(line.substr(space + 1, line.length() - space - 1));		
	}

I first use >> to read the two integers in each line. It takes 11.912 sec in total to finish the loop. An alternative way is to get each line by getline function, followed by splitting the line into two substrings, and convert each substeing into an integer. The second method takes 5.383 sec in total. 

Conclusion: although the second way involves more operations than simple >> method, but the running times of the second method is only less than half running time of its competitor.  It indicates that frequent >> operations is a heavy task, and should be avoided.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值