- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
考虑以下伪代码:
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;
}
}
以及感兴趣的输出 x1
、y1
和 pos
,
你能给我推荐一种方法来优化它,从而避免 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/
考虑以下伪代码: x1 = DEFAULT_VAL_1; y1 = DEFAULT_VAL_2; for (i = 0; i y0*x1) { x1 = x0;
我需要有关 MYSQL 中以下查询的一些帮助。 我有以下 SQL 表: LINK 我需要计算以下内容: 1。查询:按阶段返工次数 例如(基于orderid 749,请参阅链接)该订单在第01阶段已经有
我需要更改当前代码,以便在调用 EventWaitHandle.WaitOne 时不阻塞当前线程。问题是我正在等待系统范围的事件。我还没有找到任何合适的替代品。 代码: EventWaitHandle
我有一个 std::vector 指针 Person 对象,它有一个成员函数 std::string getName() const。我想使用 STL 算法计算 vector 中的所有 Person
我目前有一个(相当大的)JavaScript 文件,用于为页面上的某些元素设置动画。页面上使用了四“组”脚本,每组包含的脚本数量等于页面上教程中的步骤数。我想做的是重新编写脚本,以便它们将使用通配符定
下面是我的makefile # Location of the CUDA Toolkit CUDA_PATH ?= /usr/local/cuda-6.0 NVCC := $(CUDA_PATH)/
我的计算机上有一些虚拟机,它们通过主机专用网络相互通信。 我想模拟这些机器之间的中间人攻击。我发现的所有运行 MITM 的工具都只是监视数据包,但我没有找到任何可以真正重放或更改它们的工具。 我发现了
我是一名优秀的程序员,十分优秀!