I've tried to write/read from external EEPROM (standard 24LC256) 1024 bytes array byte by byte and by 16 bytes pages. It takes some time to save 512 int samples to EEPROM - about 10 000 000 us, and reading is much faster at 130 000 us. Next I wanted to improve code - I tried page writing and changed slightly writing and reading method to the EEPROM. New writing method on its own seems to be working however behavior is not exactly what I expected. Writing is much faster at about 600 000 us however reading is also 600 000 us hence 5 times more than old method. The code is:

byte readData(int device, unsigned int add){ byte result; //returned value Wire.beginTransmission(device); // these three lines set the pointer position in the EEPROM Wire.write((int)(add>> 8)); // left part of pointer adsress Wire.write((int)(add & 0xFF)); // and the right Wire.endTransmission(); Wire.requestFrom(device,1); // now get he byte of data if (Wire.available()) result = Wire.read(); return result; // and return it as a result of the function readData}

My first area in your software that I suspect is called Object Oriented Programming (OOP)

You are using OOPs that includes hidden bloated facilities. The overhead of OOPs is unpredictable and erratic. If you need precision software, do not use OOPs, use assembly language or a procedural language like C. Objects in OOP contain vast resources for making things easy and slow.