Skip to content

Instantly share code, notes, and snippets.

@pvcraven
Created May 3, 2019 20:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pvcraven/3e826064a12b44b8142c1399cd783c10 to your computer and use it in GitHub Desktop.
Save pvcraven/3e826064a12b44b8142c1399cd783c10 to your computer and use it in GitHub Desktop.
import numpy
import time
import ctypes
LIST_SIZE = 100_000
CYCLE_COUNT = 100
def test_native():
my_list = [0 for i in range(LIST_SIZE)]
start_time = time.perf_counter()
for cycle in range(CYCLE_COUNT):
for i in range(LIST_SIZE):
my_list[i] = float(cycle)
end_time = time.perf_counter()
total_time = end_time - start_time
print(f"Native: {total_time}")
def test_ctype_int8():
my_listn = [0 for i in range(LIST_SIZE)]
my_list = (ctypes.c_int8 * len(my_listn))(*my_listn)
start_time = time.perf_counter()
for cycle in range(CYCLE_COUNT):
for i in range(LIST_SIZE):
my_list[i] = cycle
end_time = time.perf_counter()
total_time = end_time - start_time
print(f"CTypes int8: {total_time}")
def test_ctype_int16():
my_listn = [0 for i in range(LIST_SIZE)]
my_list = (ctypes.c_int16 * len(my_listn))(*my_listn)
start_time = time.perf_counter()
for cycle in range(CYCLE_COUNT):
for i in range(LIST_SIZE):
my_list[i] = cycle
end_time = time.perf_counter()
total_time = end_time - start_time
print(f"CTypes int16: {total_time}")
def test_ctype_int32():
my_listn = [0 for i in range(LIST_SIZE)]
my_list = (ctypes.c_int32 * len(my_listn))(*my_listn)
start_time = time.perf_counter()
for cycle in range(CYCLE_COUNT):
for i in range(LIST_SIZE):
my_list[i] = cycle
end_time = time.perf_counter()
total_time = end_time - start_time
print(f"CTypes int32: {total_time}")
def test_ctype_float():
my_listn = [0 for i in range(LIST_SIZE)]
my_list = (ctypes.c_float * len(my_listn))(*my_listn)
start_time = time.perf_counter()
for cycle in range(CYCLE_COUNT):
for i in range(LIST_SIZE):
my_list[i] = float(cycle)
end_time = time.perf_counter()
total_time = end_time - start_time
print(f"CTypes float: {total_time}")
def test_ctype_double():
my_listn = [0 for i in range(LIST_SIZE)]
my_list = (ctypes.c_double * len(my_listn))(*my_listn)
start_time = time.perf_counter()
for cycle in range(CYCLE_COUNT):
for i in range(LIST_SIZE):
my_list[i] = float(cycle)
end_time = time.perf_counter()
total_time = end_time - start_time
print(f"CTypes double: {total_time}")
def test_numpy():
my_listn = [0 for i in range(LIST_SIZE)]
my_list = numpy.array(my_listn)
start_time = time.perf_counter()
for cycle in range(CYCLE_COUNT):
for i in range(LIST_SIZE):
my_list[i] = float(cycle)
end_time = time.perf_counter()
total_time = end_time - start_time
print(f"Numpy: {total_time}")
test_native()
test_ctype_int8()
test_ctype_int16()
test_ctype_int32()
test_ctype_float()
test_ctype_double()
test_numpy()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment