Skip to content
Snippets Groups Projects
Commit 3e794f18 authored by Erik Frisk's avatar Erik Frisk
Browse files

Added timing profil code

parent 6c2ed26b
No related branches found
No related tags found
No related merge requests found
import timeit
from my_ext import array_sum, array_sum_nocopy, array_sum_pyobj # noqa
import numpy as np
import matplotlib.pyplot as plt
from seaborn import despine
# %%
M = 500
N = np.logspace(1, 5, 10).astype(int)
res = {"np": [], "array_sum": [], "array_sum_nocopy": [], "array_sum_pyobj": []}
for Ni in N:
print(f"Ni = {Ni}")
x = np.random.normal(0, 1, int(Ni))
ri = timeit.repeat("x.sum()", globals=globals(), number=M, repeat=5)
res["np"].append(np.median(ri) / M)
ri = timeit.repeat("array_sum(x)", globals=globals(), number=M, repeat=5)
res["array_sum"].append(np.median(ri) / M)
ri = timeit.repeat("array_sum_nocopy(x)", globals=globals(), number=M, repeat=5)
res["array_sum_nocopy"].append(np.median(ri) / M)
ri = timeit.repeat("array_sum_pyobj(x)", globals=globals(), number=M, repeat=5)
res["array_sum_pyobj"].append(np.median(ri) / M)
for k in res:
res[k] = np.array(res[k])
# %% Plot results
fig, ax = plt.subplots(num=10, clear=True)
ax.loglog(N, res["np"] * 1e9, label="np")
ax.loglog(N, res["array_sum"] * 1e9, label="array_sum")
ax.loglog(N, res["array_sum_nocopy"] * 1e9, label="array_sum_nocopy")
ax.loglog(N, res["array_sum_pyobj"] * 1e9, label="array_sum_pyobj")
ax.legend(frameon=False)
ax.set_xlabel("N")
ax.set_ylabel("Time (ns)")
despine(ax=ax)
# %%
plt.show()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment