小编Pat*_*rin的帖子

让gcc使用条件移动

是否有gcc编译指示或我可以用来强制gcc在特定代码段上生成无分支指令?

我有一段代码,我希望gcc使用cmov指令编译成无分支代码:

int foo(int *a, int n, int x) {
    int i = 0, j = n;

    while (i < n) {
#ifdef PREFETCH
        __builtin_prefetch(a+16*i + 15);
#endif /* PREFETCH */
        j = (x <= a[i]) ? i : j;
        i = (x <= a[i]) ? 2*i + 1 : 2*i + 2;
    }
    return j;
}
Run Code Online (Sandbox Code Playgroud)

事实上,它确实如此:

morin@soprano$ gcc -O4 -S -c test.c -o -    
    .file   "test.c"
    .text
    .p2align 4,,15
    .globl  foo
    .type   foo, @function
foo:
.LFB0:
    .cfi_startproc
    testl …
Run Code Online (Sandbox Code Playgroud)

c optimization x86 gcc

10
推荐指数
2
解决办法
1997
查看次数

是否有任何stl :: set实现不使用红黑树?

有没有人见过STL的实现,其中stl :: set 没有实现为红黑树?

我问的原因是,在我的实验中,B-2B树的性能优于stl :: set(和其他红黑树实现)2到4倍,具体取决于B的值.我很好奇,如果有的话当似乎有更快的数据结构可用时,使用红黑树的一个令人信服的理由.

c++ stl b-tree red-black-tree data-structures

5
推荐指数
1
解决办法
1347
查看次数

标签 统计

b-tree ×1

c ×1

c++ ×1

data-structures ×1

gcc ×1

optimization ×1

red-black-tree ×1

stl ×1

x86 ×1