[英]printf performance: Better to use “%d” or “%c” for single digit numbers
我正在打印有關結構的信息,該結構僅包含將成為單個數字的信息(小索引和char主要充當bool)。
我希望我的printf
調用盡可能高效。 那么使用普通的%i
/ %d
格式說明符會更好'0'
,或者更好的是使用%c
並在數字中添加0x30
( '0'
),因為那時不需要對printf
進行任何格式化去做?
編輯/澄清:我已經介紹了一些嘗試這兩種技術的小程序, %c
可以更快。 如果這是生產代碼,我會堅持%d
,但這是專門針對基於速度的比賽。 (對不起,因為之前不清楚)。
確切知道的唯一方法是對兩個版本進行編碼並對其進行分析(或比較生成的機器代碼)。 話雖如此,我懷疑你會發現運行時性能有很大差異。 現代編譯器是智能的,標准庫實現被調整為盡可能高效。 很可能你的printf
實現已經對單位數整數進行了特殊的案例處理,這與你提出的類似。 與首先調用 printf
的開銷相比,所有這些都在噪聲中。
代碼應按重要性順序排列:
我認為你的方法使你的代碼不易維護,因為這是實現給定結果的一種非顯而易見的方法。
由於您要打印整數,請使用%d
,這樣可以提高可讀性。
使用其中一個不會以任何顯着的方式影響性能。
如果您的應用程序的瓶頸確實是打印階段,那么考慮使用另一種方法而不是printf()
。 一些想法: 使用fwrite() , 優化stdout或POSIX write() ,如@YoYoYonnY建議的那樣。
通常,與計算相比,stdout中的打印相對較慢,例如......
HyperTip:過早優化是邪惡的根源 - D. Knuth。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.