UKOnline

Fonction prédéfinie

Python étant un langage en partie interprété, un programme écrit avec ce langage est, par nature, plus lent que le même programme écrit avec un langage complètement compilé comme le C, par exemple. Par contre, comme on a pu le constater dans le premier chapitre, les fonctions prédéfinies de Python permettent d'accélérer significativement le temps d'exécution des programmes. La raison est simplement que les appels à ces fonctions sont, pour la plupart, directement relayés à une librairie en C, ce qui résulte en un temps exécution beaucoup plus rapide.

Voici deux fonctions qui permettent de calculer la somme de tous les nombres entiers d'une liste :

La seconde fonction est beaucoup plus rapide que la première. En effet, on passe de 74 ms à 26 ms pour calculer la somme d'un million de nombres entiers, soit une diminution de temps de 65 %.

C'est donc important de connaitre les fonctions prédéfinies de Python, mais également celles disponibles dans la librairie standard ou d'autres librairies. Tout code pouvant ne pas être interprété, mais directement exécuté nativement sur la machine, sera toujours plus rapide à exécuter.

Liste de booléens

La fonction prédéfinie all permet de tester si toutes les valeurs d'une liste valent True, et la fonction prédéfinie any si une liste contient au moins une valeur à True. C'est plus rapide d'utiliser ces fonctions que d'itérer « manuellement » les listes pour vérifier leur contenu. Voici comment on pourrait implémenter la fonction all « à la main » :

Cette fonction est beaucoup plus lente que la fonction prédéfinie all. En effet, cette dernière ne prend que 5 ms pour traiter une liste d'un million de valeurs, au lieu de 13 ms pour la version « manuelle », soit une diminution de 62 %.

Liste de nombres

Comme on l'a vu précédemment, la fonction prédéfinie sum calcule la somme des valeurs d'une liste de nombres. On peut également trouver la plus grande valeur d'une telle liste avec la fonction prédéfinie max et la plus petite valeur avec la fonction prédéfinie min. Voici, par exemple, comment on pourrait implémenter la fonction min « à la main » :

Cette fonction est plus lente que la fonction prédéfinie min. En effet, cette dernière ne prend que 39 ms pour traiter une liste d'un million d'éléments, au lieu de 55 ms pour la version « manuelle », soit une diminution de 29 %. Une observation similaire se produit évidemment avec la fonction prédéfinie max.