That's strange... are you sure that the page was actually cached and
not just being generated for the first time?

On Sat, Jan 31, 2009 at 1:51 PM, Ross Motley <[email protected]> wrote:
>
> I tried with and without APC, and it seemed to make no difference.
>
> Ross
>
>
>
> 2009/1/31 Tom Boutell <[email protected]>:
>>
>> Many points to Ross for empirically testing the issue.
>>
>> But if you tried those tests again with a bytecode cache I suspect the
>> difference would go away entirely.
>>
>> Also the Quercus reimplementation of PHP in Java, which apparently
>> runs at... oh, about the same speed as the bytecode cache, that's
>> nicely honest of them (:
>>
>> http://www.caucho.com/resin-3.0/quercus/
>>
>> On Sat, Jan 31, 2009 at 7:14 AM, Ross Motley <[email protected]> wrote:
>>>
>>> For interest, I just ran a completely unscientific speed test for both
>>> styles of template, in particular, I wondered if there is much of an
>>> overhead for PHP switching in and out of <?php ?> tags.
>>>
>>> I tried three templates, the nice looking symfony one, one with no
>>> <?php ?> tag switching and a similar amount of whitespace and one with
>>> no <?php ?> tag switching and no whitespace.
>>>
>>> When looping through 10000 items, I found that not using <?php ?> tags
>>> in the template is around 20% faster.  The difference between the
>>> whitespace and non white space versions was neglible.
>>>
>>> Not that I think this is a compelling reason not to use them, since
>>> when dealing with more sensible numbers (say, 250 items in a template
>>> as mentioned), on my dev machine the saving amounts to something like
>>> 0.05% of the total page execution time.
>>>
>>> Of course, it may vary greatly in your environment :)
>>>
>>> Here's the code I ran:
>>>
>>>
>>> <?php
>>> $myArray = array();
>>> for ($i = 1; $i <= 250; $i++) {
>>>        $myArray[$i] = array();
>>>        for ($j = 1; $j <= 10; $j++) {
>>>                $myArray[$i][] = rand(0, 10);
>>>        }
>>> }?>
>>>
>>> <?php
>>> ob_start();
>>> $start2 = microtime(true);
>>>
>>> echo "<ul>\n";
>>> foreach($myArray as $key => $item) {
>>>        echo "  <li>Item number $key has entries:\n";
>>>        echo "  <ul>\n";
>>>        foreach($item as $number) {
>>>                echo "    <li>" . $number;
>>>                if ($number > 5) {
>>>                        echo ' (Greater than 5!)';
>>>                }
>>>                echo "</li>\n";
>>>        }
>>>        echo "    </ul>\n";
>>>        echo "  </li>\n";
>>> }
>>> echo "</ul>\n";
>>>
>>> $end2 = microtime(true);
>>>
>>> ob_end_clean();
>>> ?>
>>>
>>> <?php
>>> ob_start();
>>> $start3 = microtime(true);
>>>
>>> echo '<ul>';
>>> foreach($myArray as $key => $item) {
>>>        echo '<li>Item number ' . $key  . 'has entries:<ul>';
>>>        foreach($item as $number) {
>>>                echo '<li>' . $number;
>>>                if ($number > 5) {
>>>                        echo ' (Greater than 5!)';
>>>                }
>>>                echo '</li>';
>>>        }
>>>        echo '</ul></li>';
>>> }
>>> echo '</ul>';
>>> $end3 = microtime(true);
>>>
>>> ob_end_clean();
>>> ?>
>>>
>>> <?php
>>> $start1 = microtime(true);
>>> ob_start();
>>> ?>
>>> <ul>
>>> <?php foreach($myArray as $key => $item): ?>
>>>  <li>Item number <?php echo $key ?> has entries:
>>>  <ul>
>>>  <?php foreach($item as $number): ?>
>>>    <li><?php echo $number ?>
>>>    <?php if ($number > 5): ?>
>>>      (Greater than 5!)
>>>    <?php endif; ?>
>>>    </li>
>>>  <?php endforeach; ?>
>>>  </ul>
>>>  </li>
>>> <?php endforeach; ?>
>>> </ul>
>>> <?php
>>> ob_end_clean();
>>> $end1 = microtime(true);
>>> ?>
>>>
>>>
>>> <?php
>>> $time1 = ($end1 - $start1)*1000;
>>> $time2 = ($end2 - $start2)*1000;
>>> $time3 = ($end3 - $start3)*1000;
>>> echo "Symfony style: " .  $time1. "ms<br/>";
>>> echo "Other style, some whitespace: " . $time2 . "ms<br/>";
>>> echo "Other style, no whitespace: " . $time3 . "ms<br/>";
>>>
>>> echo "<br/>Other some whitespace is: " . round(100*($time2 -
>>> $time1)/$time1) . "% time taken<br/>";
>>> echo "Other no whitespace is: " . round(100*($time3 - $time1)/$time1)
>>> . "% time taken<br/>";
>>>
>>>
>>>
>>> Ross
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> 2009/1/31 colnector (colnect.com) <[email protected]>:
>>>>
>>>> Thank you all for your insights. On my website I'm already using APC,
>>>> Symfony's cache and mod_gzip.
>>>>
>>>> Mostly an extra space or another <?php ?> block is completely
>>>> negligible. However, sometimes pages becomes heavy (for example, a
>>>> user on my site may see the following list including 250 items:
>>>> http://coins.colnect.com/en/coins/list/country/2504). In such cases, I
>>>> believe the issues I've mentioned need be considered. Also, my site is
>>>> highly dynamic so I cannot cache the really heavy pages (since each
>>>> collector sees the page differently based on his personal collection
>>>> which can change on any click he/she does).
>>>>
>>>> Yes, hardware is getting cheaper and cheaper and code is getting more
>>>> and more bloated.
>>>>
>>>> About readability, I actually have a big problem with Symfony's way of
>>>> adding more <?php ?> blocks. Obviously the example I've included
>>>> didn't demonstrate if but if we add a few IFs and FORs, then consider
>>>> these two:
>>>>
>>>> Symfony style:
>>>> <?php if (true && do_some_function(array(1, 3, $var), $stuff)) : ?>
>>>> <ul>
>>>>  <?php foreach($myArray as $item) : ?>
>>>>     <li><?php echo link_to($item['display_name'],
>>>> myClass::getItemDisplayModule($item).'/action',
>>>>                array('class' => 'some_css_class', 'whatever' =>
>>>> 'gever')); ?></li>
>>>>  <?php endforeach; ?>
>>>> </ul>
>>>> <?php endif; ?>
>>>>
>>>> A more optimized PHP script could be:
>>>>
>>>> <?php if (true && do_some_function(array(1, 3, $var), $stuff)) {
>>>>  echo '<ul>';
>>>>  foreach($myArray as $item) {
>>>>    echo '<li>'
>>>>       .link_to($item['display_name'], myClass::getItemDisplayModule
>>>> ($item).'/action',
>>>>          array('class' => 'some_css_class', 'whatever' => 'gever'))
>>>>       .'</li>';
>>>>  }
>>>>  echo '</ul>';
>>>> } ?>
>>>>
>>>>
>>>> Do you still find the first example more readable?
>>>> >
>>>>
>>>
>>> >
>>>
>>
>>
>>
>> --
>> Tom Boutell
>>
>> www.punkave.com
>> www.boutell.com
>>
>> >
>>
>
> >
>



-- 
Tom Boutell

www.punkave.com
www.boutell.com

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"symfony developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/symfony-devs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to