SS>>     If you move the additional check (newlen <
SS>>     SMART_STR_START_SIZE) and preallocation into the if (!(d)->c)
SS>>     branch, the changes won't affect the common code path.

IMO, the common code path is that of SMART_STR_START_SIZE, since as I 
said 90% of strings never reach beyond initial alloc. But I see your 
point, you are right, the START_SIZE one should be into if (!(d)->c) 
branch. 

SS>> 
SS>> > @@ -47,7 +51,11 @@
SS>> >          if (!(d)->c) (d)->len = (d)->a = 0;                                    
                         \
SS>> >          newlen = (d)->len + (n);                                               
                                 \
SS>> >          if (newlen >= (d)->a) {                                                
                                 \
SS>> > +                if((d)->a == 0 && newlen < SMART_STR_START_SIZE) {             
         \
SS>> > +                        (d)->a = SMART_STR_START_SIZE;                         
                         \
SS>> > +                } else {                                                       
                                                 \
SS>> >                  (d)->a = newlen + SMART_STR_PREALLOC;                          
                 \
SS>> > +                }                                                              
                                                         \
SS>> >                  (d)->c = SMART_STR_REALLOC((d)->c, (d)->a + 1, (what));        
 \
SS>> >          }                                                                      
                                                         \
SS>> >  } while (0)
SS>> 
SS>>     - Sascha
SS>> 
SS>> 

-- 
Stanislav Malyshev, Zend Products Engineer   
[EMAIL PROTECTED]  http://www.zend.com/ +972-3-6139665 ext.109



-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to