2016-06-02 2 views
0

У меня есть алгоритм, который использует np.random.uniform. Я хотел бы переключиться на np.random.beta и/или np.random.gamma, чтобы улучшить эффективность приближения. Поскольку алгоритм уже довольно много времени (~ 8 часов) и интенсивный объем памяти (5 ГБ на поток), я хотел проверить, была ли какая-либо информация о том, сколько это будет стоить мне, прежде чем я попробую запустить.вычислительная стоимость np.random.uniform vs np.random.beta

Поскольку он вызван внутри цикла, следует ли предположить, что он не изменит требования к памяти?

В чем разница во времени выполнения?

+0

Знаете ли вы, сколько раз эта функция вызывается за один проход? –

+0

Заказ миллионов – Keith

ответ

1

Просто проверить его с помощью IPython:

In [1]: import numpy as np 

In [2]: %timeit np.random.random(1000) 
100000 loops, best of 3: 9.25 µs per loop 

In [3]: %timeit np.random.beta(0.5, 0.5, 1000) 
10000 loops, best of 3: 45.3 µs per loop 

Это будет означать коэффициент 5, но это, кажется, зависит от параметров бета.

Тем не менее, прежде чем делать какие-либо выводы, вы должны быть уверены, что генерация случайных чисел является фактором, ограничивающим время для вашего алгоритма. Запустите профилировщик, чтобы узнать, где ваши настоящие узкие места.

Смежные вопросы