幻冰の博客

一条咸鱼的垂死挣扎

C/C++中cin、scanf输入效率对比

C++中std::cin用起来虽然方便,但是在数据量很大的时候会很慢,以至于在比赛中运行超时。

以下是几种输入方式的比较,均使用重定向方式输入,从硬盘中读取数据。

数据量指得是6位随机整数的数量

测试环境

  • Windows 10 x64
  • i5-7200U @2.5GHz
  • 8GB RAM
  • Dev-C++ 5.11
  • TDM-GCC 4.9.2 64-bit Release

废话不多说,直接上数据

数据量 cin(关闭同步) scanf cin cin(关闭同步):cin:scanf
10 0ms 0ms 0ms 1:1:1
100 0ms 0ms 0ms 1:1:1
1000 1ms 1ms 1ms 1:1:1
10000 1ms 6ms 9ms 1:6:9
100000 17ms 50ms 91ms 1:1.94:5.35
1000000 150ms 651ms 916ms 1:4.34:6.1
10000000 1725ms 6621ms 9492ms 1:3.83:5.50

从数据来看,数据量较小时(<103)耗时并没有多大区别

当数据量逐渐增大时(>=103)时耗时差距体现出来,总体上来看cin关闭同步后输入效率最高,其次时scanf,最后才是一般的cin。这和网上得出的scanf最快的结果有点差距,还得继续研究。


下面时测试用的代码

 

原创文章,转载请注明: 转载自鱼塘

本文链接地址: C/C++中cin、scanf输入效率对比

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

11 − 1 =