社区讨论

快写竟然比cout关同步流慢这么多??!!

灌水区参与者 7已保存回复 18

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
18 条
当前快照
1 份
快照标识符
@lo13gtv0
此快照首次捕获于
2023/10/22 14:35
2 年前
此快照最后确认于
2023/11/02 14:05
2 年前
查看原帖
上午模拟赛,被输出卡了好久,结果把快写换成cout,就从8秒跑进半秒!
我的快写:
CPP
#include <bits/stdc++.h>
#define gc getchar
#define pc putchar

template <typename T>
void write(T x) {
	if (x < 0) pc('-'), x = -x;
	static int st[40]; int tp = 0;
	do {st[tp++] = x % 10; x /= 10;} while (x);
	while (tp) pc(st[--tp] + '0');
}

int main() {
	freopen("test.out", "w", stdout);
	for (int i = 1; i <= 800000; i++) write(rand()), pc('\n');
	return 0;
}
等效的cout关同步流:
CPP
#include <bits/stdc++.h>

int main() {
	freopen("test.out", "w", stdout); 
	std::ios::sync_with_stdio(0); std::cout.tie(0);
	for (int i = 1; i <= 800000; i++) std::cout << rand() << '\n';
	return 0;
}
是因为我的快写写的太丑了吗???

回复

18 条回复,欢迎继续交流。

正在加载回复...