PHP expert |
|
Ik heb een tempalte-engine gemaakt, en ik wil het graag optimaliseren.
Ik heb 3 dingen die vaak worden uitgevoerd (als ik 3 tabellen print met ieder 10.000 cellen, dan duurt het ong. 4.6 sec. Met TemplatePower is dat 5.6 sec, dus het gaat al goed, maar ik wil beter ):
Functies:
<?php
// 1e functie:
function newBlock($block)
{
$pblock = &$this->TemplateData;
if(isset($this->blocks[$block]))
{
$blockparents = $this->blocks[$block];
}else
{
$this->Error('The block <i>"' . $block . '"</i> doesn\'t exist in the template <i>"' . $this->TemplateFile . '"</i>.');
}
$blockparents[] = $block;
foreach($blockparents as $k => $pname)
{
if(!isset($pblock['BLOCKS'][$pname]))
{
$pblock['BLOCKS'][$pname] = array();
}
if($pname == $block)
{
$pblock = &$pblock['BLOCKS'][$pname][count($pblock['BLOCKS'][$pname])];
}else
{
$pblock = &$pblock['BLOCKS'][$pname][count($pblock['BLOCKS'][$pname]) - 1];
}
}
$this->currBlock = &$pblock;
}
// 2e functie: (hier valt volgens mij niet veel aan te optimaliseren??)
function Assign($var, $content)
{
$this->currBlock['VARS'][$var] = $content;
}?>
<?php // 1e functie: function newBlock($block) { $pblock = &$this->TemplateData; if(isset($this->blocks[$block])) { $blockparents = $this->blocks[$block]; }else { $this->Error('The block <i>"' . $block . '"</i> doesn\'t exist in the template <i>"' . $this->TemplateFile . '"</i>.'); } $blockparents[] = $block; foreach($blockparents as $k => $pname) { if(!isset($pblock['BLOCKS'][$pname])) { $pblock['BLOCKS'][$pname] = array(); } if($pname == $block) { $pblock = &$pblock['BLOCKS'][$pname][count($pblock['BLOCKS'][$pname])]; }else { $pblock = &$pblock['BLOCKS'][$pname][count($pblock['BLOCKS'][$pname]) - 1]; } } $this->currBlock = &$pblock; } // 2e functie: (hier valt volgens mij niet veel aan te optimaliseren??) function Assign($var, $content) { $this->currBlock['VARS'][$var] = $content; }?>
Loop:
<?php
if(isset($block["BLOCKS"]["Cell"])):
foreach($block["BLOCKS"]["Cell"] as $block):
?>
<td><?=@$block["VARS"]["content"]?></td>
<?php
endforeach;
endif;
?>
<?php if(isset($block["BLOCKS"]["Cell"])): foreach($block["BLOCKS"]["Cell"] as $block): ?> <td><?=@$block["VARS"]["content"]?></td> <?php endforeach; endif; ?>
Deze dingen worden erg vaak uitgevoerd. Bij de 3 tabellen van ieder 10.000 cellen, wordt de functie assign() dus 30.000 keer uitgevoerd, en newBlock() 30.303 keer.
Weten jullie hoe dit moet?
Ik weet niets van optimalisatie...:$
mvd,
Fenrir
EDIT:
jeeej!
Het is nu:
Parse-Time: 3.8163509369 Seconds
omdat ik nu meteen output als er output is, en niet wacht tot alles klaar is.
maar verdere verbeteringen natuurlijk nog steeds welkom!
|