Die vermeintlichen Optimierungen haben aber bisher nur sehr wenig Vorteil gebracht.
Dann optimierst du möglicherweise an der falschen Stelle. Es gibt eine Faustregel die bessagt, dass ein Programm geschätzte 90% der Laufzeit in 10% des Codes verbringt. Es hilft also in der Regel recht wenig auf Verdacht zu optimieren, weil man dann mit hoher Wahrscheinlichkeit nur sehr kleine Potenziale ausschöpfen kann. Es ist viel effektiver auf Sicht zu fahren, und erstmal die Engpässe zu ermitteln und sich eine Übersicht der Lage zu verschaffen. Dafür gibt es extra Werkzeuge. xdebug hat bspw. auch einen Profiler integriert, damit kann man eine detaillierte Aufzeichnung des Laufzeitverhaltens erstellen. Betrachten und auswerten kann man die Aufzeichnungen dann mit KCachegrind. Wenn du dann den Engpass gefunden hast, dann weißt du auch, wo hohes Optimierungspotenzial liegt und kannst dann gezielt optimieren.
Es scheint mit hauptsächlich an den Schreiboperationen zu liegen. Das "write on access" (hab die Bezeichnung leider vergessen) scheint da besonders zu bremsen.
Meinst du copy-on-write? Das ist eine Perforamnce-Optimierung, sie macht Code in der eher Regel schneller als langsamer.