Skip to main content

A decorator for automatic algorithms optimization via fast matrix exponentiation

Project description

A decorator for automatic algorithms optimization via fast matrix exponentiation

https://img.shields.io/travis/borzunov/cpmoptimize/master.svg https://img.shields.io/pypi/v/cpmoptimize.svg https://img.shields.io/pypi/pyversions/cpmoptimize.svg https://img.shields.io/pypi/implementation/cpmoptimize.svg

Installation

You can install the stable version of the library using pip:

sudo pip install cpmoptimize

Or install a previously downloaded and extracted package:

sudo python setup.py install

Basic Example

Suppose we want to calculate the ten millionth Fibonacci number using a program in Python. The function with a trivial algorithm is rather slow:

def fib(n):
    a = 0
    b = 1
    for i in xrange(n):
        a, b = b, a + b
    return a

result = fib(10 ** 7)

# Time: 25 min 31 sec

But if we apply the optimizing decorator, the function will give you the answer much faster:

from cpmoptimize import cpmoptimize

@cpmoptimize()
def fib(n):
    a = 0
    b = 1
    for i in xrange(n):
        a, b = b, a + b
    return a

result = fib(10 ** 7)

# Time: 18 sec (85x faster)

Description

Actually, the decorator disassembles bytecode of a function using pretty byteplay library, analyzes the code, and tries to reduce time complexity of the algorithm used in it using fast matrix exponentiation.

The decorator uses a method implemented by Alexander Skidanov in his simple optimizing interpreter.

A detailed description of the library (including an idea explanation and an interface reference) is available in English and Russian.

Author

Copyright (c) 2014, 2015 Alexander Borzunov

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

cpmoptimize-0.3.post2.tar.gz (23.9 kB view details)

Uploaded Source

File details

Details for the file cpmoptimize-0.3.post2.tar.gz.

File metadata

File hashes

Hashes for cpmoptimize-0.3.post2.tar.gz
Algorithm Hash digest
SHA256 d65fbe4e9b6d1832931d23b2afd5d56eff0fee6d7ababd08089a4fc12c83a14e
MD5 7ccd38792278f5b6c5364f70b7194d93
BLAKE2b-256 c74eeb2afd1c9927491afac1382625fbe86dc21eaebbb89d53b3573a8ab599e0

See more details on using hashes here.

Supported by

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