Sneller mét hulpvariabele

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ward van der Put
Moderator

Ward van der Put

12/02/2013 12:56:00
Quote Anchor link
In de volgende methode is $length een hulpvariabele:

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
<?php
/**
 * @param  int $min Minimumlengte van het wachtwoord.
 * @param  int $max Maximumlengte van het wachtwoord.
 * @return string   Aselect wachtwoord.
 */

public static function getRandomPassword($min = 8, $max = 12)
{

    $password = (string) null;
    $length = mt_rand($min, $max);
    while (strlen($password) < $length) {
        ...
    }

    return $password;
}

?>


Dat kan korter en sneller, dacht ik, door de hulpvariabele te verwijderen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
public static function getRandomPassword($min = 8, $max = 12)
{

    $password = (string) null;
    while (strlen($password) < mt_rand($min, $max)) {
        ...
    }

    return $password;
}

?>


Deze tweede variant, zonder hulpvariabele, is echter significant langzamer. Wat is daarvan de logische verklaring?
 
PHP hulp

PHP hulp

26/04/2024 02:36:02
 
- SanThe -

- SanThe -

12/02/2013 13:00:15
Quote Anchor link
In je tweede script moet er steeds (minstens 8 keer) een random getal worden gegenereerd.
In het eerste script slechts 1 keer.
Uiteraard is dat langzamer.
Gewijzigd op 12/02/2013 13:01:34 door - SanThe -
 
Ward van der Put
Moderator

Ward van der Put

12/02/2013 13:04:16
Quote Anchor link
Haha, natuurlijk, helemaal overheen gelezen. Koffietijd!
 
Kris Peeters

Kris Peeters

12/02/2013 13:06:01
Quote Anchor link
Niet alleen langzamer.
Het doet niet het zelfde.

Het is zoals bij Russische roulette.

Bij de tweede methode wordt telkens de revolver opnieuw gedraaid, bij de eerste niet.

Dat maakt een meer dan substantieel verschil.
 



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.