作者ypf791 (路人1號)
看板EE_DSnP
標題[問題] cout vs printf
時間Thu Dec 6 23:16:23 2012
上次上課的時候提到 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
1F:推 ric2k1:先寫一個程式試試看 printf 是否真的比 cout 快? 12/06 23:37
2F:推 david942j:printf比cout快吧 多年OJ經驗是printf快三倍左右 12/06 23:56
3F:推 keyboardle:小測一下沒得到定論.我想先有明顯差距的程式再討論較好 12/07 02:18
4F:→ david942j:讀入500萬個int就會有明顯差距了 12/07 17:17
5F:推 butterfly21:printf vs cout是沒那麼明顯 12/07 17:38
6F:→ butterfly21:scanf vs cin 根本兩個世界 12/07 17:39
7F:推 david942j:我自動腦補成比較scanf和cin了... 12/07 18:15