关于scanf和cin的大数据读入效率
生活随笔
收集整理的這篇文章主要介紹了
关于scanf和cin的大数据读入效率
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
關于scanf和cin的大數據讀入效率 好多大佬都說scanf的讀入效率比cin高,我也當練手,用書上的程序用了個測試,程序如下:
#include<iostream> #include<ctime> #include<cstdio> #include<windows.h> using namespace std; const int num=10000000; int main(){ freopen("randnum.in","r",stdin); int i,n,start,end; start=clock(); for(int i=0;i<num-2;i++)scanf("%d",&n); end=clock(); cout<<double(end-start)/CLOCKS_PER_SEC<<endl; freopen("randnum.in","r",stdin); //ios::sync_with_stdio(false);關閉cin的同步 start=clock(); for(int i=0;i<num-2;i++)cin>>n; end=clock(); cout<<double(end-start)/CLOCKS_PER_SEC<<endl; return 0; }
?結果如下:
4.793
6.019
再測試一次,結果如下:
4.793
5.976
基本可以認定,scanf效率比cin高。
然后我關閉cin的同步,執行"ios::sync_with_stdio(false);關閉cin的同步”,再測試
結果如下:
4.768
1 .235
再測試一次,結果如下:
4.743
1.229
個人結論:在保持cin讀入同步的情況下(默認設置),scanf的效率比cin高20%左右,關閉同步的情況下,cin比scanf的效率高285%,測試數據均為4位整數。
測試次數有限,如有不符,請指正。
(本機軟件硬件信息如下,C++環境為dev c++5.11 TDM GCC 4.9.2) CPU:雙核i5-7500 3.41 3.40? 內存:8G? 系統:64位win10
#include<iostream> #include<ctime> #include<cstdio> #include<windows.h> using namespace std; const int num=10000000; int main(){ freopen("randnum.in","r",stdin); int i,n,start,end; start=clock(); for(int i=0;i<num-2;i++)scanf("%d",&n); end=clock(); cout<<double(end-start)/CLOCKS_PER_SEC<<endl; freopen("randnum.in","r",stdin); //ios::sync_with_stdio(false);關閉cin的同步 start=clock(); for(int i=0;i<num-2;i++)cin>>n; end=clock(); cout<<double(end-start)/CLOCKS_PER_SEC<<endl; return 0; }
?結果如下:
4.793
6.019
再測試一次,結果如下:
4.793
5.976
基本可以認定,scanf效率比cin高。
然后我關閉cin的同步,執行"ios::sync_with_stdio(false);關閉cin的同步”,再測試
結果如下:
4.768
1 .235
再測試一次,結果如下:
4.743
1.229
個人結論:在保持cin讀入同步的情況下(默認設置),scanf的效率比cin高20%左右,關閉同步的情況下,cin比scanf的效率高285%,測試數據均為4位整數。
測試次數有限,如有不符,請指正。
(本機軟件硬件信息如下,C++環境為dev c++5.11 TDM GCC 4.9.2) CPU:雙核i5-7500 3.41 3.40? 內存:8G? 系統:64位win10
轉載于:https://www.cnblogs.com/wendcn/p/10403124.html
總結
以上是生活随笔為你收集整理的关于scanf和cin的大数据读入效率的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 力扣——寻找两个有序数组的中位数
- 下一篇: iview下拉选