Writing/reading to external EEPROM

1024 bytes taking 600000 us is very slow 600us per byte
The expected access time is 900ns .
That is 600 times faster than you report.

http://www.mouser.com/ProductDetail/Microchip-Technology/24LC256-E-SM/?qs=Lo1urCY4z7to33SsbwG5QA==

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.