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 -~----------~----~----~----~------~----~------~--~---
