You are here: Re: Performance question - passing data between objects (PHP4-style OOP) « All PHP « IT news, forums, messages
Re: Performance question - passing data between objects (PHP4-style OOP)

Posted by Jerry Stuckle on 11/09/06 13:18

Markus Ernst wrote:
> Hello
>
> A class that composes the output of shop-related data gets some info
> from the main shop class. Now I wonder whether it is faster to store the
> info in the output class or get it from the main class whenever it is
> needed:
>
> class shop_main {
> var $prices = null;
> function &get_prices() {
> if (is_null($this->prices)) {
> $this->prices =& $this->db->getCol('SELECT id FROM shop_prices');
> if (!is_array($this->prices)) $this->prices = array();
> }
> return $this->prices;
> }
> }
>
> // case 1: store info in class
> class shop_output {
> var $prices = null;
> var $main_shop_obj;
> function do_something($product_id) {
> if (is_null($this->prices)) {
> // assume that main shop object is already set
> $this->prices =& $this->main_shop_obj->get_prices();
> }
> foreach ($this->prices as $price_id) {
> // do something...
> }
> }
> }
>
> // case 2: get info each time it is needed
> class shop_output {
> var $main_shop_obj;
> function do_something($product_id) {
> // assume that main shop object is already set
> foreach ($this->main_shop_obj->get_prices() as $price_id) {
> // do something...
> }
> }
> }
>
> BTW I also wonder whether it is appropriate to pass the prices by
> reference here - I assume it is, but in an older thread on performance
> Chung Leung stated that passing by reference can decrease performance in
> some cases.
>
> Thanks for a comment!
> Markus

Impossible to tell from your comments. There are way too many variables.

For instance - if your main shop class has 10 values and you need each
of them 50 times, and those values don't change, it's probably more
efficient to cache them in the output class.

OTOH, if you have 1M items in the main class which change frequently and
you only need 2 items from it, it's more efficient to get them from the
main class each time.

And Chung is correct. Many times passing by reference is faster, but
occasionally it's slower. However, that should not be a reason you
decide to pass by reference or not. Or if it is, it should be about
number 247 on your list.

The real question is - are you actually having performance problems, or
are you spinning your wheels on something which may or may not be a
problem? I suspect the latter.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация