2017-05-24 23 views
0

私は構造ツールチェーンの最適化構造

struct priv_data { int a ; int b } 

struct priv_data priv; 

int func() 
{ 
    a_val = priv.a; 
    b_val = priv.b; 
    printf("a+b=%d , a-b = %d , a*b = %d , a/b = %d",(a_val+b_val), 
    (a_val-b_val),(a_val*b_val),(a_val/b_val)); 
} 

を持って、私の質問は、読み取り専用としてa_val以来priv.aa_valへの最初のコピーを回避するためのインテリジェンスを使用するようコンパイラ(ツールチェイン)を行います。 a_valの代わりに、priv.aを使用してください。追加コピーを避けるために参照してください。

答えて

0

私はそれがコンパイラとコンパイルオプションによって異なると思います。しかし、O2でコンパイルしたときに、そのような中間変数が最適化される複数のケースが見られました。

+0

私は理解していますが、ほとんどの場合、コンパイラの最適化ロジックは、標準的な権利(パスの数、各パスの目的など)が同じであることを確認する簡単な方法です。 –

関連する問題