[問題] cout vs printf

看板EE_DSnP作者 (路人1號)時間11年前 (2012/12/06 23:16), 編輯推噓5(502)
留言7則, 4人參與, 最新討論串1/1
上次上課的時候提到 C++ 的 I/O 系統 想到一個問題 所以想來問一下 順便澄清一下自己的觀念 --- 根據個人的經驗 printf 的速度好像比 cout 還快 請問這是真的嗎? 如果是真的 原因又是什麼? 我自己的推論 可能的原因有以下三點 1) 那時候不習慣 cout 的格式化輸出所以寫起來比較麻煩 2) cout 裡面根本就是包 printf 所以直接多一層 function call 3) 不斷用 << 串聯的過程中 每次都多一個 function call 相較之下 printf 只有一次 function call 但是我記得 (1) 的情況並不嚴重 至少沒有大量的 if-else 所以 (2) 或 (3) 是主要原因嗎? 如果是 那麼是哪項比較嚴重 或者都差不多? --- 另外 printf 裡引數數量不固定 其內部對於引數的處理是如何呢? 是對每個引數都做了一次對應到該型別的 function call 嗎? 還是利用其他機制實現? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.4.192

12/06 23:37, , 1F
先寫一個程式試試看 printf 是否真的比 cout 快?
12/06 23:37, 1F

12/06 23:56, , 2F
printf比cout快吧 多年OJ經驗是printf快三倍左右
12/06 23:56, 2F

12/07 02:18, , 3F
小測一下沒得到定論.我想先有明顯差距的程式再討論較好
12/07 02:18, 3F

12/07 17:17, , 4F
讀入500萬個int就會有明顯差距了
12/07 17:17, 4F

12/07 17:38, , 5F
printf vs cout是沒那麼明顯
12/07 17:38, 5F

12/07 17:39, , 6F
scanf vs cin 根本兩個世界
12/07 17:39, 6F

12/07 18:15, , 7F
我自動腦補成比較scanf和cin了...
12/07 18:15, 7F
文章代碼(AID): #1GmBRCHJ (EE_DSnP)