>>> setup = """
...
... import numpy as np
...
... N = 768
... P = 1024
...
... A = np.random.random((P, N))
... """
>>> timeit.repeat('A.T.dot(A)', setup=setup, number=10, repeat=3)
[18.736198902130127, 18.66787099838257, 17.36500310897827]
Примерно 1.8 секунд на итерацию, аналог в матлабе:
N = 768;
P = 1024;
A = rand(P, N);
tic
A' * A;
toc
Elapsed time is 0.038807 seconds.
Инверсия матрицы:
>>> setup = """
... import numpy as np
...
... N = 768
... P = 1024
...
... A = np.random.random((P, N))
... H = A.T.dot(A)
... """
>>> timeit.repeat('np.linalg.inv(H)', setup=setup, number=10, repeat=3)
[7.336957216262817, 7.3821821212768555, 7.418352127075195]
примерно 0.7 сеукнд на итераию, в матлабе:
N = 768;
P = 1024;
A = rand(P, N);
H = A' * A;
tic
inv(H);
toc
Elapsed time is 0.083018 seconds.
Итого: matlab обгоняет numpy на 1-2 порядка?! Наверное, я что-то делаю не так... что?