scanf、cin及其优化、快读性能测试

为了让大家了解C++各种IO方式的性能,于是就有了这篇文章。

本次测试采取的数据均为 106 个不超过 108 随机正整数。

image

测试代码

#include<bits/stdc++.h>
using namespace std;
int x;
int main(){
	freopen("test.in","r",stdin);
	freopen("test.out","w",stdout);
	double s=clock();//记录开始时间
	for(int i=1;i<=1000000;i++){
		//测试内容 
	}
	cerr<<clock()-s<<"\n";//在终端输出运行时间
	return 0;
}

输入测试

scanf

image

328 毫秒

无优化cin

image

577 毫秒

优化后cin

image

81 毫秒

快读(不考虑负数)

image

155 毫秒

输出测试

输出每一个数后换行

printf

image

989 毫秒

无优化cout(endl)

image

1447 毫秒

优化后cout(endl)

image

1386 毫秒

无优化cout(\n)

image

61 毫秒

优化后cout(\n)

image

73 毫秒

快写

image

105 毫秒

总结

输入

如果不想关闭读写同步的话就用快读,总之不要用原生的 cinscanf 处于中立。

输出

快写的优化作用比快读小得多,几乎没有。

正常的 printf 足够。

endl 换行的 cin 慢的要死,打死也不要用。

建议用 \n 换行,优化不重要。

综上所述,不关闭读写同步建议用快读+ cout(\n换行),关闭读写同步就无脑 cin/cout。

posted @   xxxalq  阅读(220)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示