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