相关疑难解决方法(0)

循环执行时间为零

是否有可能有一个零执行时间的循环?我认为即使是一个空循环也应该有一个执行时间,因为它有与之相关的开销.

c c++ optimization execution-time as-if

74
推荐指数
3
解决办法
4481
查看次数

临时变量会减慢我的程序吗?

假设我有以下C代码:

int i = 5;
int j = 10;
int result = i + j;
Run Code Online (Sandbox Code Playgroud)

如果我多次循环,使用它会更快int result = 5 + 10吗?我经常创建临时变量以使我的代码更具可读性,例如,如果使用某个长表达式从某个数组中获取这两个变量来计算索引.这在C中是否表现不佳?其他语言怎么样?

c performance temporary

72
推荐指数
5
解决办法
5921
查看次数

如何防止GCC优化忙等待循环?

我想为Atmel AVR微控制器编写C代码固件.我将使用GCC编译它.此外,我想启用编译器优化(-Os-O2),因为我认为没有理由不启用它们,并且它们可能比手动编写汇编更快地生成更好的汇编方式.

但我想要一小段没有优化的代码.我想延迟函数的执行一段时间,因此我想写一个do-nothing循环只是为了浪费一些时间.不需要精确,只需等待一段时间.

/* How to NOT optimize this, while optimizing other code? */
unsigned char i, j;
j = 0;
while(--j) {
    i = 0;
    while(--i);
}
Run Code Online (Sandbox Code Playgroud)

由于AVR中的内存访问速度要慢得多,因此我希望i并将j其保存在CPU寄存器中.


更新:我刚刚发现UTIL/delay.hUTIL/delay_basic.hAVR libc库.尽管大多数情况下使用这些功能可能更好,但这个问题仍然有效且有趣.


相关问题:

c optimization gcc avr-gcc

62
推荐指数
4
解决办法
5万
查看次数

标签 统计

c ×3

optimization ×2

as-if ×1

avr-gcc ×1

c++ ×1

execution-time ×1

gcc ×1

performance ×1

temporary ×1