2012-08-30 23 views
-1

LHS如何固定在this code固定加载打开存储

首先,LHS发生在哪里?我猜测它是else if,第二次读s.r

从我一直在阅读有关LHS我相信,添加本地会修:

float radius = s.r; 

if(d <= -radius) 
    ... 
else if(d >= radius) 
    ... 

但由于< =是一个函数是什么阻止< =或任何其他功能,是以当地为修改它的参考?

+1

如果你这样做是为了提高性能,你已经将17个关卡深入到了微妙的硬件细节中。 – Mysticial

+0

@Mysticial这主要是为了教育目的,我不打算在这一点上做这种优化,但想知道它是如何工作的... –

+0

如果你真的对它感兴趣。你可能想要做的第一件事是在汇编中重做这个。编译器可以通过简单地将'radius'提升到一个寄存器来真正地破坏这些代码。 – Mysticial

回答

1

它不,看看the next slide。它会导致管道冲洗。也有很可能会出现分支预测失误。