while (a==b);while (a==b) {;}
while (a==b) {CONTEXT_SWITCH(1);}
目标构建如下:
#define CONTEXT_SWITCH(x)
对于 SystemC 构建,我们有:
#define CONTEXT_SWITCH(x) wait(x) //where wait is a systemC wait
在目标构建的情况下,此代码将变为代码2。想知道这是否会对性能产生影响?
while (a==b);while (a==b) {;}while (a==b) {CONTEXT_SWITCH(1);}
目标构建如下:
#define CONTEXT_SWITCH(x)
对于 SystemC 构建,我们有:
#define CONTEXT_SWITCH(x) wait(x) //where wait is a systemC wait
在目标构建的情况下,此代码将变为代码2。想知道这是否会对性能产生影响?
它会影响编译器或执行时间吗?
不会。这两种写法是完全一样的。在运行时没有任何差异,编译时间的差异也可以忽略不计,因为解析 {;} 的时间微乎其微。
如果你必须选择其中一种,那么选择对你自己意图更明确的。
不会对性能产生任何影响。
花括号本身并不会生成代码。编译器使用它们来确定复合语句的开始和结束,除此之外没有其他作用。对于编译器来说,复合语句和单个语句的处理方式是相同的 - 花括号只是让编译器知道你想要将什么作为 while 循环的语句。
当我们写while(a==b);时,两者的执行时间是相同的。编译器会在内部将其转换为while(a==b){;}。因此,你以哪种形式编写它并不重要。
while (a==b) {;}而不是while (a==b) {}?如果前者太慢,你可以尝试后者 :) 但说真的,两者没有区别。无论它是否会产生影响(如果你的编译器表现不同)- 只有你自己知道。 - AnT stands with Russia