[Python] Temps d'exécution lorsqu'une fonction est saisie dans une valeur de dictionnaire

Python sans la syntaxe switch (select) peut utiliser un dictionnaire à la place, Une note sur son temps d'exécution.

Conclusion

Si les arguments de la fonction sont différents

--Préparer (* args, ** kwargs) comme argument de la fonction à l'avance et absorber la différence.

La méthode est envisageable.

Exemple

Prenons le cas où les deux fonctions suivantes sont exécutées séparément. (Je veux connaître le temps d'exécution, donc je l'écris pour qu'il soit lent.)

def myfunc1():
    nx, ny = 50, 40
    arr = np.empty( ( nx, ny ) )
    for iy in range( ny ):
        for ix in range( nx ):
            arr[ix,iy] = ix * ix + iy * iy
    return arr


def myfunc2():
    nx, ny = 50, 40
    arr = np.empty( ( nx, ny ) )
    for iy in range( ny ):
        for ix in range( nx ):
            arr[ix,iy] = 1
    return arr

Après cela, nous avons mesuré le temps requis pour les trois méthodes d'exécution suivantes (en utilisant %% timeit de JupyterLab, ci-dessous est myfunc1 uniquement).

#Exécuter la fonction directement
myfunc1()

# { key: func }Exécuter à partir du dictionnaire de types
key = 1
dict_func = { 1: myfunc1, 2: myfunc2 }
dict_func[ key ]()

# { key: func() }Exécuter à partir du dictionnaire de types
dict_return = { 1: myfunc1(), 2: myfunc2() }
dict_return[ key ]

Le résultat était le suivant. Vous pouvez voir que le type {key: func ()} prend un temps proche du moment où les deux fonctions sont exécutées.

#Exécution directe
1: 488 µs ± 26.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
2: 286 µs ± 925  ns per loop (mean ± std. dev. of 7 runs, 1000 loops each)

# { key: func }Moule
1: 461 µs ± 332  ns per loop (mean ± std. dev. of 7 runs, 1000 loops each)
2: 298 µs ± 22.1 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

# { key: func() }Moule
1: 763 µs ± 3.96 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
2: 771 µs ± 31.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

Recommended Posts

[Python] Temps d'exécution lorsqu'une fonction est saisie dans une valeur de dictionnaire
Mesurer le temps d'exécution de la fonction en Python
Précautions lors du décapage d'une fonction en python
Hash en Perl est un dictionnaire en Python
Temps d'exécution de la fonction (Python)
Créer un dictionnaire en Python
[python] Gérer les fonctions en les mettant dans un dictionnaire (table de commande, table de fonction, pointeur de fonction)
[Python] Qu'est-ce qu'une fonction zip?
Lors de l'écriture d'un programme en Python
Ce qui est plus rapide à utiliser l'instruction if ou le type de dictionnaire lors de la conversion d'une chaîne (a-> b) en Python
Lorsqu'une chaîne de caractères d'une certaine série se trouve dans la clé du dictionnaire, la chaîne de caractères est convertie en valeur du dictionnaire.
Une fonction qui mesure le temps de traitement d'une méthode en python
[Python3] Définition d'un décorateur qui mesure le temps d'exécution d'une fonction
Un programme qui détermine si un nombre entré en Python est un nombre premier
Que faire lorsque le type de valeur est ambigu en Python?
Dans le dictionnaire python, si une clé inexistante est accédée, initialisez-la avec une valeur arbitraire
Notifier à l'aide du Centre de notifications lorsque l'environnement d'exécution est macOS en Python
Une note utile lors de l'utilisation de Python après une longue période
Dessiner un graphique d'une fonction quadratique en Python
Récupérer l'appelant d'une fonction en Python
Une manière intelligente de chronométrer le traitement avec Python
Découvrez la fraction de la valeur saisie en python
Remarque Python: lors de l'attribution d'une valeur à une chaîne
N'y a-t-il pas une valeur par défaut dans le dictionnaire?
La synchronisation de la sortie est incorrecte lorsque la sortie standard (erreur) est convertie en fichier en Python
Vérifiez si la chaîne est un nombre en python
Ceci est un exemple d'application de fonction dans dataframe.
Recevez des données de dictionnaire à partir de programmes Python avec AppleScript
Comment stocker une fonction Python dans la valeur d'un dictionnaire (dict) et appeler la fonction en fonction de la clé
Une note lors de la vérification si la clé spécifiée existe dans le dictionnaire défini avec python
Comment tester unitaire une fonction contenant l'heure actuelle à l'aide de Freezegun en Python
Incorporation dans datetime lorsque seule l'heure est connue
Choses à noter lors de l'initialisation d'une liste en Python
Que contient cette variable (lorsque le script Python est en cours d'exécution)
Sortie du temps d'exécution de python
Fonction de plancher de temps (Python)
Utilisez communiquer () lors de la réception de la sortie dans un sous-processus Python
Créer une liste lorsque la nomenclature est pour une certaine période de temps
[Python] Assurez-vous que la fonction reçue est une fonction définie par l'utilisateur
Lorsqu'une variable locale portant le même nom que la variable globale est définie dans la fonction
Que signifie le dernier () dans une fonction en Python?
[C / C ++] Passez la valeur calculée en C / C ++ à une fonction python pour exécuter le processus et utilisez cette valeur en C / C ++.
La valeur de meta lors de la spécification d'une fonction sans valeur de retour avec Dask dataframe s'applique
[Petite histoire] Une mesure minutieuse lorsque vous devez exécuter une fonction avant l'importation en Python
Obtenir la valeur d'une clé spécifique jusqu'à l'index spécifié de la liste de dictionnaires en Python
Notification Slack lorsqu'un mot spécifique est murmuré sur Twitter en utilisant Heroku avec python
Une fonction qui divise l'itérable en N morceaux en Python
Un mémo lorsque le visage est détecté avec Python + OpenCV rapidement
Une note lors de la création d'un graphe dirigé à l'aide de Graphviz en Python
L'image en échelle de gris est affichée sous forme d'image couleur dans OpenCV / Python
Pour renvoyer char * dans une fonction de rappel à l'aide de ctypes en Python
Comment obtenir la dernière (dernière) valeur d'une liste en Python
Un mémo que j'ai écrit une fonction de base en Python en utilisant la récurrence
Lorsque "Aucune modification détectée" s'affiche dans python3 manage.py makemigrations
Essayez d'exécuter une fonction écrite en Python à l'aide de Fn Project
Prendre une capture d'écran en Python
Mémo de mesure du temps d'exécution Python
Utiliser la fonction de rappel en Python