小编wlh*_*wai的帖子

如何优化比较函数中的多个独立条件分支?

struct Obj {
  int x;
  int y;
  int z;
};

int Compare(Obj* a, Obj* b) {
  if (a->x > b->x) return 1;
  else if (a->x < b->x) return -1;

  if (a->y > b->y) return 1;
  else if (a->y < b->y) return -1;

  if (a->z > b->z) return 1;
  else if (a->z < b->z) return -1;

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

如上面的代码所示,最多有3个条件分支来获取比较结果。比较函数将由某种函数调用。如何优化代码来杀死条件分支,从而提高比较函数的性能?

--- 更新 --- 由于调用者 func 是快速排序的改进版本,它需要更大、更少和相等的结果。所以比较函数应该用-1、1、0来区分三个结果。

c++ comparison performance micro-optimization branch-prediction

5
推荐指数
2
解决办法
472
查看次数