[PHP] Performance template engine optimaliseren.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een simpele template engine geschreven, maar ik ben niet echt tevreden over de performance. Ik vroeg me af wat ik hier nog qua performance aan zou kunnen optimaliseren. Het moet wel zonder meldingen werken met `error_reporting` op `E_ALL`.

Hier een klein stukje van de template engine waar de meeste tijd voor nodig is.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php

$content = $this->templates[$template];
$count = count($content) - 1;

for($i = 1; $i < $count; ++$i)
{
  if($content[$i - 1] == "{" && $content[$i + 1] == "}")
  {
    if(isset($this->variables[$content[$i]]) && $content[$i] != $variable)
    {
      $content[$i - 1] = "";
      $content[$i + 1] = "";
      $content[$i] = $this->variables[$content[$i]];
    }
  }
}

?>


Ik heb al veel geprobeerd, maar tot nu toe zonder succes. Wellicht dat hier nog het een en ander aan te verbeteren is.

[ Voor 10% gewijzigd door Verwijderd op 21-12-2002 20:54 ]


Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
Zo aan je code is er niet veel meer te zien dat nog geoptimaliseerd zou kunnen worden :?

offtopic:
Mijn stackbased template-engine staat hier, misschien dat je daar es naar moet kijken :)

[ Voor 51% gewijzigd door MisterData op 21-12-2002 21:04 ]


Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 22:59

chem

Reist de wereld rond

je code is gelijk aan
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

$content = $this->templates[$template];
$count = count($content) - 1;

for($i = 1; $i < $count; ++$i)
{
  if($content[$i - 1] == "{" && $content[$i + 1] == "}" && isset($this->variables[$content[$i]]) && $content[$i] != $variable)
  {
   $content[$i - 1] = "";
   $content[$i + 1] = "";
   $content[$i] = $this->variables[$content[$i]];
  }
}

?>
waardoor je wellicht kan kijken of 1 van de if statements het vaakst onwaar is; bv. isset($this->variables[$content[$i]]) - en die vv als eerste in de if() statement te plaatsen, hier voorkom je weer wat loops mee.

Verder vraag ik me af of het niet sneller te doen is met preg_match, maar dan zou ik eerst moeten weten hoe de rest van je code werkt.

Klaar voor een nieuwe uitdaging.