Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:36144 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 29136 invoked from network); 14 Mar 2008 17:24:02 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 14 Mar 2008 17:24:02 -0000 Authentication-Results: pb1.pair.com header.from=helly@php.net; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=helly@php.net; spf=unknown; sender-id=unknown Received-SPF: unknown (pb1.pair.com: domain php.net does not designate 85.214.94.56 as permitted sender) X-PHP-List-Original-Sender: helly@php.net X-Host-Fingerprint: 85.214.94.56 aixcept.net Linux 2.6 Received: from [85.214.94.56] ([85.214.94.56:36713] helo=h1149922.serverkompetenz.net) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 0A/18-09575-1B4BAD74 for ; Fri, 14 Mar 2008 12:24:02 -0500 Received: from localhost (h1149922.serverkompetenz.net [85.214.94.56]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by h1149922.serverkompetenz.net (Postfix) with ESMTP id 6531B11F0AC; Fri, 14 Mar 2008 18:23:57 +0100 (CET) Date: Fri, 14 Mar 2008 18:23:55 +0100 Reply-To: Marcus Boerger X-Priority: 3 (Normal) Message-ID: <1539788104.20080314182355@marcus-boerger.de> To: Stanislav Malyshev CC: Dmitry Stogov , Andi Gutmans , phpxcache , In-Reply-To: <47DAAD25.4000507@zend.com> References: <06B0D32C7A96544490D18AF653D6BDE5026BA3C7@il-ex1.zend.net> <3210620415.20080314173251@marcus-boerger.de> <47DAAD25.4000507@zend.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: 8bit Subject: Re: [PHP-DEV] Patch for opcode caches From: helly@php.net (Marcus Boerger) Hello Stanislav, Friday, March 14, 2008, 5:51:49 PM, you wrote: >> But that means we are compiling inheritance when a file is loaded form >> the cache. The goal should be to compiling inheritance when writing to >> the opcode cache file. All we achieve here is a slow down. If there is > You can not do that. You do not know that until runtime. >> something that makes this required than at least we need to warn the user >> about the slow code. I Think what we need to do is deprecating class and > It won't be slow. It would be much faster (in some cases 10x faster). > This specific assembly of instructions might be slower in some cases, > but the code altogether will be faster. That's the idea of the opcode > caches. >> namespace use in non main blocks as well as include and require in non >> main blocks. And if there is no such case than everything can be bound >> early which is the fast state we should aim for. Lemme just think, doing inheritance at compile time before we send the stuff to an opcode cache can be slower then? How is that possible? After all late binding means we do it at run time. And no matter how much faster we can do it. It will always be slower than doing the same thing only once. > We do not need to deprecate anything, and inheritance can not be bound > before parent class is known, which in the case of bytecode cache means > - not before the file is loaded from the cache. That's exactly what this > patch enables. It does not change performance characteristics of neither > cached not non-cached code, it just makes it much simpler and working in > all cases. Inheritance cannot be done before the parent class is known. We still need to do the prototype checks even if we assume the class is there and insert a virtual class as parent somehow. Best regards, Marcus