“ int a,b;”之间的性能差异和“ int a; int b;”?

时间:2018-10-28 14:14:33

标签: c++ c compilation compiler-construction compiler-optimization

标题很容易描述这个问题。

每次我可以将两个单独的语句放在一个块中时,我都会想到这个问题。尤其是当我为CPU成本问题(例如NP完全问题)编写代码时。

是否有必要将两个单独的语句组合在一起?。

2 个答案:

答案 0 :(得分:5)

  

“ int a,b;”和“ int a; int b;”?

那些声明在语义上是等效的,并且没有理由为什么任何一个都会产生彼此不同的程序,因此没有理由在性能上会有差异。

但是,第一个声明要短几个字符,因此,从磁盘加载源文件所需的时间,编译过程可能会快几微秒。

  

是否有必要将两个单独的语句组合在一起?

一般来说,不是。

答案 1 :(得分:1)

正如其他人所述,两者都是等效的声明。一个可能比另一个编译得快一些。

它们都是声明
可以在运行时通过在内存中分配空间(例如在堆栈上),保留寄存器或忽略来实现声明。

如果编译器发出用于变量分配的指令,则处理时间可以忽略不计(以纳秒或微秒为单位)。

在考虑性能时,您的第一个检查清单项目应为(按以下顺序):

  1. 需求-消除需求可以加速程序。
  2. 设计-高效的算法,去除变量,高效 接口
  3. 实施(编码)-算法的高效编码。
  4. 编译器优化级别-设置编译器优化级别 在最高处。
  5. 特定于平台的技巧-使用特殊的处理器算法, 硬件支持等。

通常,与真正快速而不可靠的程序相比,客户宁愿选择速度较慢的高质量程序。
利益相关者宁愿开发一个程序,也不愿为那些投资回报率(ROI)不高的优化付费。

注重质量和坚固性。仅在必要时进行优化。