From: <lph...@us...> - 2010-01-26 17:01:17
|
Revision: 24672 http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=24672&view=rev Author: lphuberdeau Date: 2010-01-26 17:01:06 +0000 (Tue, 26 Jan 2010) Log Message: ----------- [ENH] Reduce cost of looping (14% gain on test scenario with 4900 tracker fields) Modified Paths: -------------- trunk/lib/core/lib/TikiDb/Bridge.php trunk/lib/trackers/trackerlib.php Modified: trunk/lib/core/lib/TikiDb/Bridge.php =================================================================== --- trunk/lib/core/lib/TikiDb/Bridge.php 2010-01-26 16:14:12 UTC (rev 24671) +++ trunk/lib/core/lib/TikiDb/Bridge.php 2010-01-26 17:01:06 UTC (rev 24672) @@ -23,6 +23,11 @@ return self::get()->query( $query, $values, $numrows, $offset, $reporterrors ); } // }}} + function fetchAll( $query = null, $values = null, $numrows = -1, $offset = -1, $reporterrors = true ) // {{{ + { + return self::get()->fetchAll( $query, $values, $numrows, $offset, $reporterrors ); + } // }}} + function queryError( $query, &$error, $values = null, $numrows = -1, $offset = -1 ) // {{{ { return self::get()->queryError( $query, $error, $values, $numrows, $offset ); Modified: trunk/lib/trackers/trackerlib.php =================================================================== --- trunk/lib/trackers/trackerlib.php 2010-01-26 16:14:12 UTC (rev 24671) +++ trunk/lib/trackers/trackerlib.php 2010-01-26 17:01:06 UTC (rev 24672) @@ -2169,11 +2169,11 @@ $query = "select * from `tiki_tracker_fields` $mid order by ".$this->convertSortMode($sort_mode); $query_cant = "select count(*) from `tiki_tracker_fields` $mid"; - $result = $this->query($query,$bindvars,$maxRecords,$offset); + $result = $this->fetchAll($query,$bindvars,$maxRecords,$offset); $cant = $this->getOne($query_cant,$bindvars); $ret = array(); - while ($res = $result->fetchRow()) { + foreach( $result as $res ) { $res['options_array'] = preg_split('/\s*,\s*/', trim($res['options'])); $res['itemChoices'] = ( $res['itemChoices'] != '' ) ? unserialize($res['itemChoices']) : array(); $res['visibleBy'] = ($res['visibleBy'] != '') ? unserialize($res['visibleBy']) : array(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |