i++は++iより遅いのか?

cppcheckが性能の問題で後置演算子をやめるように言ってきます。

 

なぜ?と思ったので、調べてみたら、、、、

こちらに書いてありました。

https://stackoverflow.com/questions/24886/is-there-a-performance-difference-between-i-and-i-in-c


// Prefix
Integer& Integer::operator++()
{
    *this += 1;
    return *this;
}

// Postfix
const Integer Integer::operator++(int)
{
    Integer oldValue = *this;
    ++(*this);
    return oldValue;
}



Prefix increment:

a = ++b + c;

; increment b
LD    A, [&b]
INC   A
ST    A, [&b]

; add with c
ADD   A, [&c]

; store in a
ST    A, [&a]

Profix increment:

a = b++ + c;

; load b LD A, [&b]

; add with c ADD A, [&c]

; store in a ST A, [&a]

; increment b LD A, [&b] INC A ST A, [&b]

前の記事:cppcheck、それから 次の記事:Intel MPX機能を調べていたら、、、

コメントする