mes func
созданы измерительные функции для каждого типа данных
This commit is contained in:
parent
a740a6cb6b
commit
859ee847dd
|
|
@ -158,9 +158,63 @@ def bst_list_all(root):
|
|||
inorder(root, result)
|
||||
return result
|
||||
|
||||
def generate_test_data(n=10000):
|
||||
def generate_test_data(n=10000):
|
||||
records = [(f"User_{i:05d}", f"+7-999-{i:05d}") for i in range(n)]
|
||||
records_sorted = records[:]
|
||||
records_shuffled = records[:]
|
||||
random.shuffle(records_shuffled)
|
||||
return records_sorted, records_shuffled
|
||||
return records_sorted, records_shuffled
|
||||
|
||||
def measure_insert(struct_name, records):
|
||||
start = time.perf_counter()
|
||||
if struct_name == "LinkedList":
|
||||
head = None
|
||||
for name, phone in records:
|
||||
head = ll_insert(head, name, phone)
|
||||
obj = head
|
||||
elif struct_name == "HashTable":
|
||||
buckets = ht_create(bucket_count=2000)
|
||||
for name, phone in records:
|
||||
ht_insert(buckets, name, phone)
|
||||
obj = buckets
|
||||
elif struct_name == "BST":
|
||||
root = None
|
||||
for name, phone in records:
|
||||
root = bst_insert(root, name, phone)
|
||||
obj = root
|
||||
else:
|
||||
raise ValueError(f"Unknown structure: {struct_name}")
|
||||
elapsed = time.perf_counter() - start
|
||||
return elapsed, obj
|
||||
|
||||
def measure_find(obj, struct_name, existing_names, nonexisting_names):
|
||||
start = time.perf_counter()
|
||||
for name in existing_names:
|
||||
if struct_name == "LinkedList":
|
||||
ll_find(obj, name)
|
||||
elif struct_name == "HashTable":
|
||||
ht_find(obj, name)
|
||||
else:
|
||||
bst_find(obj, name)
|
||||
for name in nonexisting_names:
|
||||
if struct_name == "LinkedList":
|
||||
ll_find(obj, name)
|
||||
elif struct_name == "HashTable":
|
||||
ht_find(obj, name)
|
||||
else:
|
||||
bst_find(obj, name)
|
||||
return time.perf_counter() - start
|
||||
|
||||
def measure_delete(obj, struct_name, names_to_delete):
|
||||
start = time.perf_counter()
|
||||
if struct_name == "LinkedList":
|
||||
for name in names_to_delete:
|
||||
obj = ll_delete(obj, name)
|
||||
elif struct_name == "HashTable":
|
||||
for name in names_to_delete:
|
||||
ht_delete(obj, name)
|
||||
else:
|
||||
for name in names_to_delete:
|
||||
obj = bst_delete(obj, name)
|
||||
elapsed = time.perf_counter() - start
|
||||
return elapsed, obj
|
||||
Loading…
Reference in New Issue
Block a user