小编And*_*nko的帖子

在相同的 C 代码中,对相同作用域内相同类型的变量进行相同的操作所花费的时间不同

见过类似的问题,但它们与缓存未命中或代码重新排序有关。在我的例子中,这些都没有发生。

代码很简单:

#include <stdio.h>
#include <time.h>

void main()
{
    unsigned char a, b;
    int i;

    clock_t before = clock();
    for (i = 0; i < 10000000; i++) {
        a *= 2;
        b *= 2;
    }
    printf("elapsed: %lu\n", clock() - before);

    before = clock();
    for (i = 0; i < 10000000; i++) {
        a *= 2;
        a *= 2;
    }    
    printf("elapsed: %lu\n", clock() - before);
}
Run Code Online (Sandbox Code Playgroud)

所以有两个变量ab,我用它们做一些事情(做什么并不重要)。第一个循环修改ab,第二个循环a仅修改 。只能是b也好,无所谓。

第二个循环大约花费两倍的时间。 …

c optimization performance

3
推荐指数
1
解决办法
93
查看次数

标签 统计

c ×1

optimization ×1

performance ×1