I am using EEPROM to save a large number of user settings and a few runtime stats. Currently all the variables are stored in a struct and loaded into the EEPROM using .put().
The reference documentation mentions the .put() function compares the new data with the currently saved data to reduce the number of bytes written to flash, but I’m wondering if it does this for the whole object or on an individual byte level.
For example… If one value in the struct changes, does the EEPROM only write the changed bytes or will it rewrite the entire struct?
Most of my saved values will never change after the first configuration, but some of the runtime stats are saved regularly. By storing them all in the same struct and saving it to EEPROM frequently, am I putting excessive wear on the flash pages?
Would it make more sense to store the settings and runtime stats in different structs?