Генерация данных и замер времени

This commit is contained in:
Alexander 2026-05-25 00:05:01 +03:00
parent e435c7fcc1
commit 07dc80bee2

View File

@ -123,4 +123,40 @@ def bst_list_all(root):
records.extend(bst_list_all(root['left']))
records.append((root['name'], root['phone']))
records.extend(bst_list_all(root['right']))
return records
return records
def generate_data(n=2000):
random_data = [(f"User_{i:05d}", str(i)) for i in range(n)]
random.shuffle(random_data)
sorted_data = sorted(random_data, key=lambda x: x[0])
return random_data, sorted_data
def run_test(data, struct_name, create, insert, find, delete):
times = {'insert': [], 'search': [], 'delete': []}
for _ in range(5):
s = create()
start = time.perf_counter()
if struct_name == 'LinkedList' or struct_name == 'BST':
for name, phone in data:
s = insert(s, name, phone)
else:
for name, phone in data:
insert(s, name, phone)
times['insert'].append(time.perf_counter() - start)
names = [random.choice(data)[0] for _ in range(100)] + [f"None_{i}" for i in range(10)]
start = time.perf_counter()
for name in names:
find(s, name)
times['search'].append(time.perf_counter() - start)
del_names = [random.choice(data)[0] for _ in range(50)]
start = time.perf_counter()
for name in del_names:
if struct_name == 'LinkedList' or struct_name == 'BST':
s = delete(s, name)
else:
delete(s, name)
times['delete'].append(time.perf_counter() - start)
return {op: sum(t)/len(t) for op, t in times.items()}