c++ - Always assign vs check equality and assign -
is there noticeable performance difference between:
if (a != b) = b;
, a = b;
when a
, b
both of same built-in type int
or bool
or maybe simple , small struct
?
as understand second expression write memory every time (which assume heavier operation read), while first 1 if a
, b
not equal.
or depends on how b
value changed?
i understand it's more of "++i vs i++" kind of question, curious though
it depends.
for x86 cpus, cost of operations involved in program, follows:
- non-cached read (i.e. read ram not cached yet): ~100 clocks
- cached read: 3 ~10 clocks
- register read: 1/2 clock (value rough, there no such single operation "read")
- write: varies , depends, ~1 clock
- comparison: 5-10 clocks if compiler guess "which branch happen" wrong (this known "pipeline stall"); otherwise - 1 clock.
using information, might able make guesstimates ;-).
for other (non-x86) desktop/server/mobile cpus numbers different, overall picture more or less same.
Comments
Post a Comment