我正在打印有关一个结构的信息,该结构仅包含将全部为一位数字的信息(小索引和char主要充当布尔值)。
我希望我的printf
通话尽可能高效。因此,使用常规的%i
/ %d
格式说明符会更好,还是使用%c
并向其中添加0x30
('0'
)更好呢?数字,从那以后printf
就不需要格式化吗?
编辑/说明::我已经介绍了一些尝试两种方法的小型程序,而%c
可以更快。如果这是用于生产代码,那么我只会坚持使用%d
,但这专门用于基于速度的比赛。 (对不起,因为之前还不清楚)。
答案 0 :(得分:3)
唯一可以确定的方法是对两个版本进行编码并对其进行概要分析(或比较生成的机器代码)。话虽如此,我怀疑您会发现运行时性能有很大差异。现代编译器很聪明,并且标准库的实现已调整为尽可能高效。您的printf
实现很可能已经对一位整数进行了特殊情况处理,该处理与您提出的内容类似。与最初仅调用 printf
的开销相比,所有这些都降低了噪音。
代码应按重要性顺序排列:
我认为您的方法会使代码的可维护性降低,因为这不是获得给定结果的明显方法。
答案 1 :(得分:1)
由于要打印整数,请使用%d
,以提高可读性。
一个使用另一个不会对性能产生任何重大影响。
如果应用程序的瓶颈确实在打印阶段,请考虑使用printf()
以外的其他方法。一些想法:use fwrite(),optimize stdout或POSIX write(),如@YoYoYonnY所建议。
通常,与例如进行计算相比,在stdout中打印相对较慢。
HyperTip:过早的优化是邪恶的根源-D. Knuth。