Tag: 展开

高效的手动循环展开

我有这个C代码: for (k = 0; k < n_n; k++) { if (k == i || k == j) continue; dd=q2_vect[k]-q1_vect; d2=dd*dd; if (d2<0) { a=1; break; } } 出于编译器优化的原因(在Cell处理器的SPE上),我需要手动解开这个,所以我尝试了: dd=q2_vect[0]-q1_vect; d2=dd*dd; if (d2<0)goto done; dd=q2_vect[1]-q1_vect; d2=dd*dd; if (d2<0)goto done; dd=q2_vect[2]-q1_vect; d2=dd*dd; if (d2<0)goto done; ….. ….. // end goto notdone; done: ok=0; notdone: ….. 但我不知道如何应对 […]