On Fri, 5 Feb 2021 at 15:03, Dmitry Stogov <dmitrysto...@gmail.com> wrote:
> Hi, > > I'm glad to present the result of my recent work - Inheritance Cache. > > https://github.com/php/php-src/pull/6627 > > This is a new transparent technology that eliminates overhead of PHP class > inheritance. > > PHP classes are compiled and cached (by opcahce) separately, however their > "linking" was done at run-time - on each request. The process of "linking" > may involve a number of compatibility checks and borrowing > methods/properties/constants form parent and traits. This takes significant > time, but the result is the same on each request. > > Inheritance Cache performs "linking" for unique set of all the depending > classes (parent, interfaces, traits, property types, method types involved > into compatibility checks) once and stores result in opcache shared memory. > As a part of the this patch, I removed limitations for immutable classes > (unresolved constants, typed properties and covariant type checks). So now > all classes stored in opcache are "immutable". They may be lazily loaded > into process memory, if necessary, but this usually occurs just once (on > first linking). > > The patch shows 8% improvement on Symphony "Hello World" app. > > I'm going to merge this patch into master on next week. > Please review and give your comments. > > Thanks. Dmitry. > Hi Dmitry, that sounds awesome, congrats for this work! If I understand correctly, this only offers performance improvements when the classes are not preloaded, and thus closes a bit the gap between preloading on & off? — Benjamin