Генерация данных и замер времени
This commit is contained in:
parent
e435c7fcc1
commit
07dc80bee2
|
|
@ -123,4 +123,40 @@ def bst_list_all(root):
|
||||||
records.extend(bst_list_all(root['left']))
|
records.extend(bst_list_all(root['left']))
|
||||||
records.append((root['name'], root['phone']))
|
records.append((root['name'], root['phone']))
|
||||||
records.extend(bst_list_all(root['right']))
|
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()}
|
||||||
Loading…
Reference in New Issue
Block a user