Position actuelle: Accueil> Derniers articles> Comment utiliser GetTimeOfday pour effectuer des tests de performances de haute précision?

Comment utiliser GetTimeOfday pour effectuer des tests de performances de haute précision?

gitbox 2025-05-28

Qu'est-ce que GetTimeOfday?

GetTimeOfday () est une fonction intégrée en PHP qui renvoie les détails de l'heure actuelle, y compris les secondes et les microsecondes. Sa valeur de retour est un tableau contenant les clés suivantes:

  • SEC : Le nombre de secondes de l'heure actuelle (calculée à partir de l'époque Unix)

  • USEC : le nombre de microsecondes dans la seconde actuelle

Grâce à ces deux valeurs, nous pouvons obtenir un horodatage plus précis que Time () ou MicroTime () , qui convient aux tests de performances de haute précision.

Comment calculer le temps d'exécution du code à l'aide de GetTimeOfday?

L'idée de base est: enregistrer le décalage horaire avant et après l'exécution du code et calculez le temps d'exécution.

 <?php
// Enregistrez l&#39;heure de début
$start = gettimeofday();

// Voici le code que vous souhaitez tester
usleep(500000); // Retard analogique 0.5 Deuxième

// Enregistrer l&#39;heure finale
$end = gettimeofday();

// Calculez le décalage horaire,单位为Deuxième(含微Deuxième)
$duration = ($end['sec'] - $start['sec']) + ($end['usec'] - $start['usec']) / 1000000;

echo "Temps d&#39;exécution de code:{$duration} Deuxième";
?>

Dans le code ci-dessus:

  • GetTimeOfday () Renvoie un tableau associatif.

  • Nous calculons la différence en secondes et la différence de microsecondes respectivement, puis la convertissent en secondes.

  • La durée de $ finale est un numéro de point flottant qui représente le nombre exact de secondes que le code est en cours d'exécution.

Un exemple plus complet de tests de performances

Supposons que nous voulons tester les performances d'une fonction:

 <?php
function testFunction() {
    $sum = 0;
    for ($i = 0; $i < 1000000; $i++) {
        $sum += $i;
    }
    return $sum;
}

$start = gettimeofday();
$result = testFunction();
$end = gettimeofday();

$duration = ($end['sec'] - $start['sec']) + ($end['usec'] - $start['usec']) / 1000000;

echo "Résultat d&#39;exécution de la fonction:$result\n";
echo "Temps d&#39;exécution:{$duration} Deuxième\n";
?>

Dans cet exemple, nous mesurons le temps où la fonction TestFunction () est exécutée pour nous faciliter pour évaluer les performances de la fonction.

Avantages de l'utilisation de GetTimeOfday

  • Haute précision : mesure du temps au niveau microseconde, plus précise que le temps () .

  • Simple et facile à utiliser : la valeur de retour est un tableau, et les informations des secondes et des microsecondes sont claires.

  • Pas de dépendance : fonctions intégrées PHP, aucune extension n'est requise.

Choses à noter

  • L'heure renvoyée par getTimeOfday () est l'heure actuelle du serveur, qui peut être affectée par les ajustements du temps du système, et ne convient pas aux comparaisons de temps inter-serveur ou distribuées.

  • Pour les segments de code très courts, le temps d'exécution peut être très faible et il est recommandé d'exécuter plusieurs fois et de calculer la valeur moyenne pour des résultats plus stables.