Skip to main content

Timench is a small framework for measure execution time of one function, multiple functions and code

Project description

Timench

Timench is a small framework for measure execution time of one function, multiple functions and some code with context

Internal variables

Timench has three internal dicts:

  • Timench.funcs = {case_name: func} - for storage funcs for measurement by case name
  • Timench.times = {case_name: [time1, time2, ]} - for storage measurement time (as list) by case name
  • Timench.reports = {case_name: 'report'} for storage for measurement reports (as string) by case name

Usage

1. Time measurement of single function run

For example let's try to measure run time of time.sleep() function

tmnch = Timench()
case_name = 'sleep_1sec'
tmnch.add_func(case_name, time.sleep)  # Add function with case name to benchmark list

Now we can set args for time.sleep(*args) and run benchmark

repeats = 10  # Count of repeats
sleep_time = 1.0  # args of time.sleep(sleep_time)
tmnch.run(case_name, repeats, sleep_time)  # Run benchmark
print(tmnch.get_report(case_name))  # Print benchmark report

and write report to txt-file

tmnch.write_reports('example_1_report.txt')

2. Time measurement of multiple functions run.

My favorite way of Timench usage is compare execution time of different code with same features. Here is basic setup of example:

import time

from timench import Timench

tmnch = Timench()
repeats = 10
env_args = {  # dict structure: {case_name: [args, kwargs] of function func(*args, **kwargs), }
    'sleep_1s': [[1.0, ], None],
    'sleep_2s': [[2.0, ], None],
    'sleep_3s': [[3.0, ], None]
}

for case_name in env_args:  # # Add functions to benchmark list
    tmnch.add_func(case_name, time.sleep)

Run all benchmarks:

tmnch.multiple_run(repeats, env_args)   # Run multiple benchmarks

Output reports to terminal and txt-file:

for case_name in env_args:
    print(tmnch.get_report(case_name))  # Print to terminal all reports

tmnch.write_reports('example_2_report.txt')  # Write all reports to txt-file

3. Context usage

Sometimes we need to know execution times of code without function creation and benchmark setup.

Let's look to simple example:

import time

from timench import Timench

with Timench():  # Just wrap your code with Timench
    time.sleep(1.0)

Full examples

Example 1. Time measurement of function single run

import time

from timench import Timench

tmnch = Timench()
case_name = 'sleep_1sec'  # Set run case name
repeats = 10  # Count of repeats
sleep_time = 1.0  # args of time.sleep(sleep_time)

tmnch.add_func(case_name, time.sleep)  # Add function to benchmark list

tmnch.run(case_name, repeats, sleep_time)  # Run benchmark
print(tmnch.get_report(case_name))  # Print benchmark report

tmnch.write_reports('example_1_report.txt')  # Write all reports to txt-file

Output example:

Case: sleep_1sec
---
Function: sleep
Total time = 10.0128 sec
Best loop time = 1.00024 sec
Average loop time = 1.00128 sec
Repeats = 10

Example 2. Time measurement of multiple functions run

import time

from timench import Timench

tmnch = Timench()
repeats = 10
env_args = {  # dict structure: {case_name: [args, kwargs] of function func(*args, **kwargs), }
    'sleep_1s': [[1.0, ], None],
    'sleep_2s': [[2.0, ], None],
    'sleep_3s': [[3.0, ], None]
}

for case_name in env_args:  # # Add functions to benchmark list
    tmnch.add_func(case_name, time.sleep)

tmnch.multiple_run(repeats, env_args)  # Run multiple benchmarks

for case_name in env_args:
    print(tmnch.get_report(case_name))  # Print to terminal all reports

tmnch.write_reports('example_2_report.txt')  # Write all reports to txt-file

Output example:

Case: sleep_1s
---
Function: sleep
Total time = 10.1691 sec
Best loop time = 1.00017 sec
Average loop time = 1.01691 sec
Repeats = 10

Case: sleep_2s
---
Function: sleep
Total time = 20.0776 sec
Best loop time = 2.00185 sec
Average loop time = 2.00776 sec
Repeats = 10

Case: sleep_3s
---
Function: sleep
Total time = 30.0205 sec
Best loop time = 3.00012 sec
Average loop time = 3.00205 sec
Repeats = 10

Example 3. Time measurement with context execution

import time

from timench import Timench

with Timench():  # Run time measurement for some code
    time.sleep(1.0)
    time.sleep(2.0)
    time.sleep(3.0)

Output example:

Run time = 6.00682 sec

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

timench-0.2.0.tar.gz (4.3 kB view details)

Uploaded Source

Built Distribution

timench-0.2.0-py3-none-any.whl (5.1 kB view details)

Uploaded Python 3

File details

Details for the file timench-0.2.0.tar.gz.

File metadata

  • Download URL: timench-0.2.0.tar.gz
  • Upload date:
  • Size: 4.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.6.9

File hashes

Hashes for timench-0.2.0.tar.gz
Algorithm Hash digest
SHA256 ea2ba6f4f371603cd0486a67e9b8352fb7658fb65676770787d0d6a33f6b3fde
MD5 3d23cbf0ad88a76cf136570853b9f0b5
BLAKE2b-256 3d4690c313e7b7a5c5fa5b2f54d5646f8be8f6633992a5c256656b86cbb00511

See more details on using hashes here.

File details

Details for the file timench-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: timench-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 5.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.6.9

File hashes

Hashes for timench-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3a0ba657fd9dd973ddf6925d08dd37b91425122d288ec1f3f5d4ad573a0206bc
MD5 9217560caa4d7ea454621d07193a0e9a
BLAKE2b-256 f4bc1bcf6fc04167ed497073b9914606212d8ae1cd586d9e8d2414c2f53f0a16

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page