[英]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.