A decorator for automatic algorithms optimization via fast matrix exponentiation
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.
Release files for cpmoptimize 0.3.post2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cpmoptimize-0.3.post2.tar.gz | 23.9 kB | Details |
Release files / cpmoptimize-0.3.post2.tar.gz
| Download URL | cpmoptimize-0.3.post2.tar.gz |
|---|---|
| Size | 23.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d65fbe4e9b6d1832931d23b2afd5d56eff0fee6d7ababd08089a4fc12c83a14e
|
|
BLAKE2b-256 checksum How to use checksums |
c74eeb2afd1c9927491afac1382625fbe86dc21eaebbb89d53b3573a8ab599e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |