Created
May 17, 2019 08:43
-
-
Save esc/33d9ade4f3c9fce617093cd2ff0f7d6e to your computer and use it in GitHub Desktop.
np vs. loop
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import timeit\n", | |
"from numba import njit\n", | |
"import numpy as np" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"@njit\n", | |
"def jit_norm_1_np(a):\n", | |
" return np.sum(np.abs(a))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"@njit\n", | |
"def jit_norm_1_loop(a):\n", | |
" ret = 0.0\n", | |
" for k in range(a.shape[0]):\n", | |
" ret += abs(a[k])\n", | |
" return ret" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"a = np.arange(10000)\n", | |
"aa = [np.arange(10**i) for i in range(10)]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1\n", | |
"The slowest run took 8.52 times longer than the fastest. This could mean that an intermediate result is being cached.\n", | |
"992 ns ± 1.2 µs per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", | |
"10\n", | |
"371 ns ± 12.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)\n", | |
"100\n", | |
"419 ns ± 9.96 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)\n", | |
"1000\n", | |
"488 ns ± 9.16 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)\n", | |
"10000\n", | |
"4.56 µs ± 152 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)\n", | |
"100000\n", | |
"44.5 µs ± 973 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n", | |
"1000000\n", | |
"1.06 ms ± 94.3 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n", | |
"10000000\n", | |
"24.8 ms ± 1.22 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", | |
"100000000\n", | |
"575 ms ± 19.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", | |
"1000000000\n", | |
"25.7 s ± 1.07 s per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" | |
] | |
} | |
], | |
"source": [ | |
"for aaa in aa:\n", | |
" print(aaa.shape[0])\n", | |
" %timeit jit_norm_1_np(aaa)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1\n", | |
"227 ns ± 6.42 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)\n", | |
"10\n", | |
"233 ns ± 3.49 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)\n", | |
"100\n", | |
"325 ns ± 6.15 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)\n", | |
"1000\n", | |
"1.2 µs ± 11.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)\n", | |
"10000\n", | |
"10.2 µs ± 244 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)\n", | |
"100000\n", | |
"98.5 µs ± 1.56 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n", | |
"1000000\n", | |
"1.02 ms ± 22.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n", | |
"10000000\n", | |
"10.7 ms ± 491 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", | |
"100000000\n", | |
"102 ms ± 3.85 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", | |
"1000000000\n", | |
"1.08 s ± 80.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" | |
] | |
} | |
], | |
"source": [ | |
"for aaa in aa:\n", | |
" print(aaa.shape[0])\n", | |
" %timeit jit_norm_1_loop(aaa)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.7.3" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment