[PATCH] string_offset access optimization

From: Date: Thu, 15 Jul 2010 09:10:14 +0000
Subject: [PATCH] string_offset access optimization
Groups: php.internals 
Request: Send a blank email to internals+get-49078@lists.php.net to get a copy of this message
Hi, Recently I noticed that reading of string offset is performed in two steps. At first special string_offset variant of temporary_variable is created in zend_fetch_dimension_address_read() and then the real string value is created in _get_zval_ptr_var_string_offset(). I think we can create the real string in the first place. This makes 50% speed-up on string offset reading operation and allows to eliminate some checks and conditional brunches in VM. The patch is attached (don't forget to regenerate zend_vm_execute.h to test it). However it changes behavior in one bogus case. The following code now will emit "b" (currently it generates a fatal error - cannot use string offset as an array). $str = "abs"; var_dumo($str[1][0]); I think it's not a problem at all. "b" makes sense because "abs"[1] -> "b" and "b"[0] -> "b". I'm going to commit the patch in case of no objections. Thanks. Dmitry.

« previous php.internals (#49078) next »