Skip to main content

TimeTime

Résumé

TimeTime est une classe qui permet d’afficher le temps d’exécution de fonctions, également de les comparer entre eux. TimTime retourne le temps d’exécution total pour <loops> boucles (par défaut 10000) et le temps moyen par boucle.

TimeTime est simple à utiliser. Il est basé sur les modules built-in time et re.

Usage

Les fonctions à comparer doivent être sans arguments. Il est fortement recommandé, pour la lisibilité des résultats de l'analyse, qu'elle ne comporte pas d'impressions écran de résultats de la fonction elle-même (si ça doit être le cas, voyez une alternative pour éviter un "print" dans l'exemple).

from timetime import TimeTime

def fonction1():
	...

def fonction2():
	...

f1 = TimeTime(fonction1)
f2 = TimeTime(fonction2)

print(f1)
print(f2)
print(f1 == f2)
etc.

TimeTime.loops = 1000
TimeTime.version()
TimeTime.demo()
etc.

Exemple

cet exemple vous montre également comment contourner le cas où vos fonctions de test doivent envoyer des impressions. On les renvoie dans un fichier /dev/null (nul - je crois, sous windows)

import os
from timetime import TimeTime as tt

def fonc1():
    with open(os.devnull, 'w') as f:
         f.write('b'+'c')

a = 'b'+'c'
def fonc2():
    with open(os.devnull, 'w') as f:
        f.write(a)

f1 = tt(fonc1)
f2 = tt(fonc2)
# quelle est la fonction la plus rapide ?
for i in range(3):
    print("--- phase", i, "---")
    print(f1 == f2)

Commentaires à propos de l'exemple

Les résultats:

--- phase 0 ---

fonc1() == fonc2()
------------------------------------------
fonc1(), 10000 loops.
Total runtime = 0.2219841480255127
Mean loop = 2.219841480255127e-05
------------------------------------------
------------------------------------------
fonc2(), 10000 loops.
Total runtime = 0.21685266494750977
Mean loop = 2.1685266494750976e-05
------------------------------------------
--- phase 1 ---

fonc1() == fonc2()
------------------------------------------
fonc1(), 10000 loops.
Total runtime = 0.21837949752807617
Mean loop = 2.1837949752807617e-05
------------------------------------------
------------------------------------------
fonc2(), 10000 loops.
Total runtime = 0.216231107711792
Mean loop = 2.16231107711792e-05
------------------------------------------
--- phase 2 ---

fonc1() == fonc2()
------------------------------------------
fonc1(), 10000 loops.
Total runtime = 0.21810102462768555
Mean loop = 2.1810102462768555e-05
------------------------------------------
------------------------------------------
fonc2(), 10000 loops.
Total runtime = 0.21857643127441406
Mean loop = 2.1857643127441406e-05
------------------------------------------

que constate-ton ?

Que l'avantage de concatener préalablement une seule fois n'est pas du tout évident sur le fait de concaténer l'équivalent de la chainea à chaque tour de boucle.

Ces comparaisons entre diverses implémentations ou diverses fonctions ne sont pas toujours aussi proches; voyez timetime_demo.py

Metadata

Release files for timetime 1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for timetime 1.0
File Size Uploaded Provenance
timetime-1.0.tar.gz 4.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for timetime 1.0
File Interpreter ABI Platform
timetime-1.0-py3-none-any.whl Python 3 none any Details

Total release size: 9.6 kB

Release files / timetime-1.0.tar.gz

Download URL timetime-1.0.tar.gz
Size 4.7 kB
Tags Source
SHA-256 checksum
How to use checksums
cb63facbb90b9edeac898dc46bb548e2c0a86b6c18938468759d4f41399e40bc
BLAKE2b-256 checksum
How to use checksums
b885985250a4c5eeae56308a531d678b637a4a4dcf4ed8d9235a76e7a74f1041
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

Release files / timetime-1.0-py3-none-any.whl

Download URL timetime-1.0-py3-none-any.whl
Size 4.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
918634a42d4c5e8e7dd0a87560a89940e46b846cf2549a0861dcd156f433bef2
BLAKE2b-256 checksum
How to use checksums
ec47fba556812831d15fd7aece46be1aa95bcf0f7c16ec485e9fd1190d8121fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

Security for timetime 1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page