Last active
June 20, 2019 00:34
-
-
Save eteq/219807090f456a6f7893e1ed7098f828 to your computer and use it in GitHub Desktop.
This file contains 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 numpy as np\n", | |
"\n", | |
"from astropy import units as u\n", | |
"\n", | |
"%matplotlib inline\n", | |
"from matplotlib import pyplot as plt" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"ns = 10**np.arange(9)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1.01 µs ± 30.4 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)\n", | |
"1.1 µs ± 23.1 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)\n", | |
"1.21 µs ± 30.9 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)\n", | |
"3.62 µs ± 67.5 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)\n", | |
"23.6 µs ± 862 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n", | |
"239 µs ± 6.38 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n", | |
"2.24 ms ± 69.5 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", | |
"37.4 ms ± 1.13 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", | |
"714 ms ± 20.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" | |
] | |
} | |
], | |
"source": [ | |
"resesa = []\n", | |
"for n in ns:\n", | |
" a = np.random.randn(n)\n", | |
" res = %timeit -o a/1000\n", | |
" resesa.append(res)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"792 ns ± 32.4 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)\n", | |
"794 ns ± 18.5 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)\n", | |
"841 ns ± 23 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)\n", | |
"1.22 µs ± 31.5 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)\n", | |
"4.35 µs ± 232 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)\n", | |
"57 µs ± 2.84 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n", | |
"376 µs ± 12 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n", | |
"18.4 ms ± 715 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", | |
"212 ms ± 8.96 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" | |
] | |
} | |
], | |
"source": [ | |
"resesam = []\n", | |
"for n in ns:\n", | |
" a = np.random.randn(n)\n", | |
" res = %timeit -o a*1e-3\n", | |
" resesam.append(res)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"10.4 µs ± 190 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)\n", | |
"11 µs ± 914 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)\n", | |
"10.4 µs ± 156 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)\n", | |
"11.7 µs ± 82.8 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)\n", | |
"16.8 µs ± 149 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)\n", | |
"68.9 µs ± 1.37 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n", | |
"412 µs ± 20.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n", | |
"21.3 ms ± 338 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", | |
"225 ms ± 12.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" | |
] | |
} | |
], | |
"source": [ | |
"resesq = []\n", | |
"for n in ns:\n", | |
" q = np.random.randn(n)*u.km\n", | |
" res = %timeit -o q.to(u.m)\n", | |
" resesq.append(res)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"20.9 µs ± 387 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n", | |
"21.1 µs ± 397 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n", | |
"21 µs ± 312 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n", | |
"23.9 µs ± 869 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n", | |
"34.5 µs ± 542 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n", | |
"134 µs ± 1.37 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n", | |
"1.95 ms ± 16.8 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n", | |
"45.3 ms ± 820 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", | |
"450 ms ± 28.5 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" | |
] | |
} | |
], | |
"source": [ | |
"resesq2 = []\n", | |
"for n in ns:\n", | |
" q = np.random.randn(n)*u.km\n", | |
" res = %timeit -o q.to(u.m).to(u.nm)\n", | |
" resesq2.append(res)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.loglog(ns, [r.average for r in resesq], 'o-', label='Quantity')\n", | |
"plt.loglog(ns, [r.average for r in resesa], 'o-', label='ndarray div')\n", | |
"plt.loglog(ns, [r.average for r in resesam], 'o-', label='ndarray mul')\n", | |
"plt.loglog(ns, [r.average for r in resesq2], 'o-', label='Quantity2')\n", | |
"plt.legend(loc=0);" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python (astro36)", | |
"language": "python", | |
"name": "astro36" | |
}, | |
"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.6.7" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment