0
나는이 질문 Why is it faster to process a sorted array than an unsorted array? 및 Mysticial가 제공하는 가장 좋은 대답을 읽고 있었다. 대답은 무슨 일이 일어나고 있는지, 왜 그런지에 대해 설명하는 훌륭한 일을합니다.왜 비트 연산자이 문 if 문이 동일하다?
그래서 무엇을 할 수 있습니까?
컴파일러가 분기를 조건부 으로 최적화 할 수없는 경우 성능을 위해 가독성을 희생하려는 경우 해킹을 시도 할 수 있습니다.
은 교체 :
if (data[c] >= 128)
sum += data[c];
로 :
int t = (data[c] - 128) >> 31;
sum += ~t & data[c];
는이 지점을 제거하고 약간의 비트 작업으로 대체합니다.
정확히이 코드는 일을하고 왜 상응하는 무엇입니까?