A python library to measure algorithms execution time and compare with its theoretical complexity
Project description
Almetro Library
version number: 1.0.7 author: Arnour Sabino
Overview
A python library to measure algorithms execution time and compare with its theoretical complexity.
Installation / Usage
To install use pip:
$ pip install almetro
Or clone the repo:
$ git clone https://github.com/arnour/almetro.git
$ python setup.py install
Information
Almetro uses timeit module from python to time your algorithms.
See more here
Examples
Applying Almetro to a quadratic algorithm:
import almetro
from almetro.algorithms import loop_n_quadratic
from almetro.complexity import cn_quadratic
from almetro.instance import growing
metro = almetro\
.new()\
.with_execution(trials=5)\
.with_instances(instances=20, provider=growing(initial_size=100, growth_size=100))\
.metro(algorithm=loop_n_quadratic, complexity=cn_quadratic)
chart = metro.chart()
chart.show()
Applying Almetro to a lg n algorithm:
import almetro
from almetro.algorithms import loop_n_log
from almetro.complexity import clog_n
from almetro.instance import growing
metro = almetro\
.new()\
.with_execution(trials=100)\
.with_instances(instances=20, provider=growing(initial_size=10000, growth_size=10000))\
.metro(algorithm=loop_n_log, complexity=clog_n)
chart = metro.chart()
chart.show()
Customazing execution:
import almetro
from almetro.complexity import Complexity
from almetro.instance import generator
my_custom_complexity = Complexity(
theoretical=lambda v=1, e=1, c=1: v * v,
experimental=lambda v=1, e=1, c=1: v + e,
text='O(v^2)',
latex=r'$\mathcal{O}(v^2)$'
)
# You need to provide instances as dict: {'name': '', 'size': {}, 'value': {}}
# Size must contains all needed theoretical complexity arguments
# Value must contain all needed algorithms arguments
def my_custom_instances(n):
g = create_some_graph()
for _ in range(n):
yield {
'name': 'my instance name',
'size': {'v': len(g.nodes()), 'e': len(g.edges())}, 'c': some_order_value(),
'value': {
'graph': g,
'v': len(g.nodes())
}
}
def my_custom_algorithm(graph, v):
# Do some stuff
pass
N = 50
instances_generator = my_custom_instances(N)
# Trials determine how many times each instance will be repeated for Almetro to pick the min time.
metro = almetro\
.new()\
.with_execution(trials=5)\
.with_instances(instances=N, provider=generator(instances_generator)\
.metro(algorithm=my_custom_algorithm, complexity=my_custom_complexity)
metro.chart().show()
metro.table().show()
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file almetro-1.0.7.tar.gz.
File metadata
- Download URL: almetro-1.0.7.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc36e46bf75d97c4a120ee4645e95f7c088ebefd6a279ce6c7cd9fe09ed1155a
|
|
| MD5 |
d1616dcc53a1049ac882c6b6f0f4bcdc
|
|
| BLAKE2b-256 |
6e24136c3e64edc3c1d5c3a162a5aae7dfa478d6e1d262fed5cefc1f40f4e6f7
|
File details
Details for the file almetro-1.0.7-py3-none-any.whl.
File metadata
- Download URL: almetro-1.0.7-py3-none-any.whl
- Upload date:
- Size: 11.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
465e4fc324870c58cdd7ee9b037b0172b194334e1fd70b32e75101eb55b4944a
|
|
| MD5 |
c750721b06e6be910848db43b9135056
|
|
| BLAKE2b-256 |
f42aecf2c10de34a628b232a80397fa23da45ee72c496bf15a7acbd973cfe29c
|