Во время игры этот вопрос я заметил, что я не мог объяснить относительную производительность np.log2
, np.log
и np.log10
:
In [1]: %%timeit x = np.random.rand(100000)
....: np.log2(x)
....:
1000 loops, best of 3: 1.31 ms per loop
In [2]: %%timeit x = np.random.rand(100000)
np.log(x)
....:
100 loops, best of 3: 3.64 ms per loop
In [3]: %%timeit x = np.random.rand(100000)
np.log10(x)
....:
100 loops, best of 3: 3.93 ms per loop
np.log2
примерно в 3 раза быстрее, чем np.log
и np.log10
. Возможно, еще более интуитивно, np.log1p(x)
, который вычисляет ln (x + 1), находится на одном уровне с np.log2
:
In [4]: %%timeit x = np.random.rand(100000)
np.log1p(x)
....:
1000 loops, best of 3: 1.46 ms per loop
Я получил почти одинаковые тайминги в numpy v1.10.1 и v1.8.2.
Есть ли интуитивное объяснение этих несоответствий в производительности во время выполнения?