Created
May 3, 2019 20:55
-
-
Save pvcraven/3e826064a12b44b8142c1399cd783c10 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
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