Created
August 7, 2019 17:18
-
-
Save TheNeuralBit/158dff3fa90dc46a369bb014e913650d to your computer and use it in GitHub Desktop.
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
from timeit import timeit | |
N = int(1E6) | |
def bench_conversion(int_size): | |
np_to_int = timeit('int(i)', setup='import numpy as np; i=np.int%d(4528)' % int_size, number=N) | |
int_to_np = timeit('np.int%d(i)' % int_size, setup='import numpy as np; i=int(4528)', number=N) | |
np_to_np = timeit('np.int%d(i)' % int_size, setup='import numpy as np; i=np.int%d(4528)' % int_size, number=N) | |
print("np.int%d to int:\t%.3f ns/op" % (int_size, np_to_int*1E9/N)) | |
print("int to np.int%d:\t%.3f ns/op" % (int_size, np_to_int*1E9/N)) | |
print("np.int%d to np.int%d:\t%.3f ns/op" % (int_size, int_size, np_to_int*1E9/N)) | |
pass_ = timeit('pass', setup='import numpy as np',number=N) | |
print("pass:\t%.3f ns/op" % (pass_*1E9/N)) | |
int_to_int = timeit('int(i)', setup='import numpy as np; i = int(4528)', number=N) | |
print("int to int:\t%.3f ns/op" % (int_to_int*1E9/N)) | |
for int_size in (8, 16, 32, 64): | |
bench_conversion(int_size) | |
# Output on my Desktop | |
# System python, v2.7.16 | |
# ---- | |
# pass: 6.117 ns/op | |
# int to int: 71.524 ns/op | |
# np.int8 to int: 89.784 ns/op | |
# int to np.int8: 89.784 ns/op | |
# np.int8 to np.int8: 89.784 ns/op | |
# np.int16 to int: 86.715 ns/op | |
# int to np.int16: 86.715 ns/op | |
# np.int16 to np.int16: 86.715 ns/op | |
# np.int32 to int: 89.172 ns/op | |
# int to np.int32: 89.172 ns/op | |
# np.int32 to np.int32: 89.172 ns/op | |
# np.int64 to int: 88.072 ns/op | |
# int to np.int64: 88.072 ns/op | |
# np.int64 to np.int64: 88.072 ns/op |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment