gpt4 book ai didi

c - 循环优化 - 返工

转载 作者:太空宇宙 更新时间:2023-11-04 02:51:55 26 4
gpt4 key购买 nike

考虑以下伪代码:

x1 = DEFAULT_VAL_1;
y1 = DEFAULT_VAL_2;
for (i = 0; i < CONST1; i++) {
x0 = *x0buffer++;
y0 = *y0buffer++;
if (x0*y1 > y0*x1)
{
x1 = x0;
y1 = y0;
pos = i;
}
}

以及感兴趣的输出 x1y1pos

你能给我推荐一种方法来优化它,从而避免 if 语句吗?

最佳答案

如果你在 x86 上,你不相信你的编译器会优化它并且你愿意进入汇编那么这将达到目的:

x1 = DEFAULT_VAL_1;
y1 = DEFAULT_VAL_2;
for (i = 0; i < CONST1; i++) {
x0 = *x0buffer++;
y0 = *y0buffer++;

asm (
"cmp %3, %4\n\t"
"cmovl %5, %0\n\t"
"cmovl %6, %1\n\t"
"cmovl %7, %2\n\t"
: "+g" (pos)
, "+g" (x1)
, "+g" (y1)
: "r" (x0*y1)
, "r" (y0*x1)
, "r" (i)
, "r" (x0)
, "r" (y0)
: "cc"
);
}

关于c - 循环优化 - 返工,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21285362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com