wat is sneller (if-statement)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken voor of bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q. programmadocumentatie. Wie

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken voor of bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q. programmadocumentatie. Wie

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken voor of bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q. programmadocumentatie. Wie

Bekijk vacature »

Specialist i-veiligheid industriële automatis

De afdeling Informatievoorziening is richtinggevend op het gebied van informatievoorziening, fungeert als waterschapsbrede informatiedienst en levert de benodigde ICT voorzieningen. De afdeling heeft een proactieve instelling om tijdig te kunnen inspelen op ontwikkeling en technologieën op het tempo van verandering. In ons waterschap geven we op zowel operationeel, als ook beleidsmatig niveau invulling aan het beheersen van risico’s voor informatieveiligheid. Doel hiervan is om op professionele wijze de risico’s van cybercrime en data lekken te beheersen en de gevolgen ervan te beperken.. Voor het cluster Informatieadvies zoeken wij een enthousiaste: Specialist i-veiligheid industriële automatisering (ICS) Voor 36 uur per week,

Bekijk vacature »

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

08/03/2021 04:03:21
 
Erik Rijk
Moderator

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.