freopen 与 fstream 的速度之争

来源:互联网 发布:java线程 编辑:程序博客网 时间:2024/06/06 09:17

(4月7日)

这里只测读入速度,打印速度不作评测

一、整数

测试数据一览
foo1 ~ foo5:20 000 000 个 0~231-1 范围的整数
foo6 ~ foo10:20 000 000 个 231 ~ 231-1 范围的整数
foo11 ~ foo13:20 000 000个 0~263-1 范围的整数
foo14 ~ foo16:20 000 000个 263 ~263-1 范围的整数
foo17 ~ foo19:20 000 000个 0 ~ 215-1 范围的整数
foo20 ~ foo22:10 000 000个 231 ~ 231-1 范围的整数
foo23 ~ foo25:50 000 000个 231 ~ 231-1 范围的整数

程序目标
读入整数,不输出(输出也会对时间有影响)

参评程序

  1. freopen + scanf
  2. freopen + cin
  3. freopen + cin, ios::sync_with_stdio(false)
  4. fstream + fin
  5. fstream + fin, ios::sync_with_stdio(false)

(时间过了1小时33分钟)
好了,数据生成完了(我再也不用慢成翔的机械硬盘了)(要换个850EVO),下面写程序
(又过了10分钟)
然后是评测
(又过了13分钟)
啦啦啦啦啦啦~~终于出结果了
这里写图片描述
所以一般情况下推荐使用fstream+fin并且打开开关ios::sync_with_stdio(false),竞赛时不开开关即可。

评测机:
Intel酷睿i7-4790(老师:(ノ-_-)ノ~┻━┻)锁了单核单线程(\#-_-)\┯━┯)
R7 260((ノ-_-)ノ~┻━┻×2),
DDR3 1600 8GB,希捷1TB

0 0