Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
def f(n):
if n == 0:
return
n-=1
print n
f(n)
@cpmoptimize()
def f(n, k):
res = 0
for i in xrange(n):
m = 3
res += ((k ** m) & 676) + i
return res
m = 3 за пределы цикла?@cpmoptimize()
def f(n, k):
res = 0
_const1 = (k ** m) & 676
for i in xrange(n):
m = 3
res += _const1 + i
return res
k в степень, задаваемую неинициализированной переменной. C учётом того, что переменная m в цикле не изменяется, логично и её выносить за пределы цикла.WPython — модифицированный интерпретатор CPython 2.6.4 с более эффективной моделью байт-кода, умной системой сворачивания констант и переработанной виртуальной машиной.
Далее вы увидите, что эта оптимизация может ускорять программу не в определённое количество раз, а асимптотически.
при увеличении размера входных данных вклад постоянных множителей и слагаемых низших порядков, фигурирующих в выражении для точного времени работы, становится крайне незначительным.
Далее вы увидите, что эта оптимизация может ускорять программу не в определённое количество раз, а асимптотически.
За убитую карму спасибо большое тем, кто ее убил. Всего-то переспросил по теме, для понимания. Что с хабром?.. :(Вашу карму не трогал, но могу предположить, что программисту нельзя не знать про вычислительную сложность алгоритмов, и про то, что именно называется асимптотикой.
b = (A^k)u,
A имеет размерность NxN.M << N ненулевых элементов. В общем случае возведение этой матрицы в степень превратит ее в заполненную. K*N*M умножений (будем считать только их). A в степень K:log KN^3 умножений. Пусть используется что-то вроде алгоритма Штрассена, тогда N^{log 7}.(log K)*(N^{log 7})
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в степень