wat is sneller (if-statement)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ozzie PHP

Ozzie PHP

23/11/2010 12:14:46
Quote Anchor link
Wat is sneller (en dus de juiste keuze) ervan uitgaande dat in de normale situatie A, B en C niet waar zijn? Of maakt het niks uit?

Variant 1:
// 3 regels code, 3 if-statements

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if (A = waar) // voer iets uit ;
if (B = waar) // voer iets uit ;
if (C = waar) // voer iets uit ;  
?>


of

Variant 2:
// 5 regels code, 1 if-statement

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if (A = waar || B = waar || C = waar) {
  if (A = waar) // voer iets uit ;
  if (B = waar) // voer iets uit ;
  if (C = waar) // voer iets uit ;  
}
?>


Zelf denk ik dat variant 2 de juiste keuze is, omdat nu de hele if-statement op 1 regel staat en in de normale situatie (A, B en C niet waar) de inhoud van de if-statement toch niet wordt uitgevoerd. Is dat een terechte gedachte?
 
PHP hulp

PHP hulp

23/11/2024 13:23:59
 
Erik Rijk

Erik Rijk

23/11/2010 12:24:53
Quote Anchor link
Vergelijken doe je met een dubbele = ( == )

verder dat ik dat het een performance verschil is die absoluut niet merkbaar is.
Als je met objecten gaat werken zal je een keer rekening moeten houden met performance.
 
Bas Cost Budde

Bas Cost Budde

23/11/2010 12:40:50
Quote Anchor link
Benchmarkje zegt dat methode 2 sneller is wanneer alle disjuncten onwaar zijn, en langzamer als een van hen waar is. In dat laatste geval evalueer je de drie condities bovendien tweemaal.

Ik ben het met Erik absoluut eens dat je op deze schaal beter geen klokcycli kan proberen uit te sparen--kies dan voor een taal die sneller loopt dan PHP, daar haal je veel meer winst mee.

Nog een kipnugget:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if ($a == true)

is natuurlijk equivalent met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if ($a)
 
Ozzie PHP

Ozzie PHP

23/11/2010 13:00:29
Quote Anchor link
Bas Cost Budde op 23/11/2010 12:40:50:
Ik ben het met Erik absoluut eens dat je op deze schaal beter geen klokcycli kan proberen uit te sparen--kies dan voor een taal die sneller loopt dan PHP, daar haal je veel meer winst mee.
`
Alle besparingen zijn meegenomen toch??? Die dubbele if check indien A, B en C niet waar zijn is niet erg, want er wordt in dat geval een error gegooid.
Gewijzigd op 23/11/2010 13:01:29 door Ozzie PHP
 
Mark L

Mark L

23/11/2010 13:57:08
Quote Anchor link
Klopt het dat '===' sneller is dan '=='?
Dat had ik ergens gelezen.
 
Chris -

Chris -

23/11/2010 14:22:38
Quote Anchor link
@Mark, en Bas

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
echo '<pre>';

$a = 'string';
if($a)
{

    echo 'if($a)'.PHP_EOL;
    if($a == true)
    {

        echo 'if($a == true)'.PHP_EOL;
    }

    if($a == 'string')
    {

        echo 'if($a == "string")'.PHP_EOL;    
    }

    if($a === 'string')
    {

        echo 'if($a === "string")'.PHP_EOL;    
    }

    if($a === true)
    {

        echo 'if($a === true)'.PHP_EOL;    
    }
}
    
else
{
    echo 'if($a) == false';    
}
[
/code]
Output:
[
code]
if($a)
if($a == true)
if($a == "string")
if($a === "string")
[
/code]
===
is een exacte vergelijking, terwijl == ook kijkt of de variabele is geset (true). Daarom krijg je als output geen "$a === true" terug :-)
 
Ozzie PHP

Ozzie PHP

23/11/2010 14:27:59
Quote Anchor link
==
checkt of waardes gelijk zijn

===
checkt of waardes gelijk zijn en of de variabelen van hetzelfde type zijn (boolean, string, int)
Gewijzigd op 23/11/2010 14:28:24 door Ozzie PHP
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.