Checking everything to see if they changed would likely be more demanding on the cpu than simply saving everything every few seconds, because checking means pulling the previous value out of storage for comparison, which is as much work as saving. Plus, you have that comparison and the saving.
Directly saving is therefore at least saving the checking operation.