Maison > développement back-end > Golang > le corps du texte

Comment obtenir le temps d'exécution d'une fonction en langage Go

青灯夜游
Libérer: 2023-01-17 10:23:06
original
3202 Les gens l'ont consulté

En langage Go, vous pouvez utiliser la fonction Since() dans le package time pour obtenir le temps d'exécution de la fonction. Définissez une heure de début avant l'exécution de la fonction et obtenez l'intervalle de temps entre l'heure de début et le présent à la fin de l'exécution de la fonction. Cet intervalle de temps est le temps d'exécution de la fonction et le temps d'exécution de la fonction peut être calculé à l'aide de : la fonction time.Since(), la syntaxe "time.Since(t)" renverra le temps écoulé depuis t jusqu'à maintenant.

Comment obtenir le temps d'exécution d'une fonction en langage Go

L'environnement d'exploitation de ce tutoriel : système Windows 7, GO version 1.18, ordinateur Dell G3.

Utilisez le temps.Puisque pour calculer le temps d'exécution

La durée d'exécution de la fonction est un indicateur important pour mesurer les performances de cette fonction, en particulier dans les tests de comparaison et de référence, le moyen le plus simple de démarrer heure de la fonction Il s'agit de définir une heure de début avant l'exécution de la fonction et d'obtenir l'intervalle de temps entre l'heure de début et le présent à la fin de l'exécution de la fonction.

En langage Go, nous pouvons utiliser la fonction Since() dans le package time pour obtenir le temps d'exécution de la fonction. L'introduction de la fonction Since() dans la documentation officielle du langage Go est la suivante. La fonction

func Since(t Time) Duration
Copier après la connexion

Since() renvoie le temps écoulé entre t et maintenant, ce qui équivaut à time.Now().Sub(t).

Exemple 1 : Utilisez la fonction Since() pour obtenir le temps d'exécution de la fonction

package main
import (
    "fmt"
    "time"
)
func test() {
    start := time.Now() // 获取当前时间
    sum := 0
    for i := 0; i < 100000000; i++ {
        sum++
    }
    elapsed := time.Since(start)
    fmt.Println("该函数执行完成耗时:", elapsed)
}
func main() {
    test()
}
Copier après la connexion

Le résultat d'exécution est le suivant :

该函数执行完成耗时: 39.8933ms
Copier après la connexion

Nous avons mentionné ci-dessus que la fonction time.Now().Sub() est similaire à la fonction Since(), si vous souhaitez utiliser time.Now().Sub() pour obtenir le temps d'exécution de la fonction, il vous suffit de modifier simplement la ligne 14 de notre code ci-dessus.

Exemple 2 : Utilisez time.Now().Sub() pour obtenir le temps d'exécution de la fonction

package main
import (
    "fmt"
    "time"
)
func test() {
    start := time.Now() // 获取当前时间
    sum := 0
    for i := 0; i < 100000000; i++ {
        sum++
    }
    elapsed := time.Now().Sub(start)
    fmt.Println("该函数执行完成耗时:", elapsed)
}
func main() {
    test()
}
Copier après la connexion

Les résultats d'exécution sont les suivants :

该函数执行完成耗时: 36.8769ms
Copier après la connexion

En raison de l'influence du processeur de l'ordinateur et de certains autres facteurs , lors de l'obtention du temps d'exécution de la fonction, les résultats seront légèrement différents à chaque fois, ce qui est normal.

Développez vos connaissances : utilisez time.Now().Sub() pour calculer le décalage horaire

Il suffit de remplacer time.Since() par time.Now().Sub(), comme suit :

    start := time.Now() // 获取当前时间
    sum := 0
    for i := 0; i < 100000000; i++ {
        sum++
    }
    elapsed := time.Now().Sub(start)
    fmt.Println(elapsed)
Copier après la connexion

En fait, time.Since appelle en interne la fonction Sub. Allons dans le package time pour voir. Le commentaire signifie que Since renvoie le temps écoulé depuis Time.Since est l'abréviation de time.Now(). .Sub(t),

srctimetime.go 923:6

// Since returns the time elapsed since t.
// It is shorthand for time.Now().Sub(t).
func Since(t Time) Duration {
    var now Time
    if t.wall&hasMonotonic != 0 {
        // Common case optimization: if t has monotonic time, then Sub will use only it.
        now = Time{hasMonotonic, runtimeNano() - startNano, nil}
    } else {
        now = Now()
    }
    return now.Sub(t)
}
Copier après la connexion

Quand on peut aussi utiliser time.Now().Sub(start).Seconds() pour obtenir le nombre de secondes qui se sont écoulées, Hours to obtenir le nombre d'heures écoulées, etc., le correspondant peut également être abrégé en time.Since(start).Seconds(), time.Since(start).Seconds(), etc.

【Recommandations associées : Tutoriel vidéo Go, Enseignement de la programmation

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal