diff --git a/SmirnovaVYu/docs/data/experiment.py b/SmirnovaVYu/docs/data/experiment.py deleted file mode 100644 index 3cfba7ed..00000000 --- a/SmirnovaVYu/docs/data/experiment.py +++ /dev/null @@ -1,94 +0,0 @@ -import time -import numpy as np -from linkedlist import ll_insert, ll_find, ll_delete -from hashtable import ht_create, ht_insert, ht_find, ht_delete -from bst import bst_insert, bst_find, bst_delete - - -def measure_insert(records, struct_type, params=None): #Замер времени вставки всех записей - start = time.perf_counter() - - if struct_type == 'linkedlist': - head = None - for name, phone in records: - head = ll_insert(head, name, phone) - result = head - - elif struct_type == 'hashtable': - size = params.get('size', 1000) if params else 1000 - buckets = ht_create(size) - for name, phone in records: - ht_insert(buckets, name, phone) - result = buckets - - elif struct_type == 'bst': - root = None - for name, phone in records: - root = bst_insert(root, name, phone) - result = root - - end = time.perf_counter() - return end - start, result - - -def measure_find(structure, names_to_find, struct_type): #Замер времени поиска записей - start = time.perf_counter() - - for name in names_to_find: - if struct_type == 'linkedlist': - ll_find(structure, name) - elif struct_type == 'hashtable': - ht_find(structure, name) - elif struct_type == 'bst': - bst_find(structure, name) - - end = time.perf_counter() - return end - start - - -def measure_delete(structure, names_to_delete, struct_type): #Замер времени удаления записей - start = time.perf_counter() - - for name in names_to_delete: - if struct_type == 'linkedlist': - structure = ll_delete(structure, name) - elif struct_type == 'hashtable': - ht_delete(structure, name) - elif struct_type == 'bst': - structure = bst_delete(structure, name) - - end = time.perf_counter() - return end - start, structure - - -def run_single_experiment(struct_type, mode, data_records, names_to_find, names_to_delete, repeats, params=None): #Запуск одного эксперимента - insert_times = [] - find_times = [] - delete_times = [] - - for i in range(repeats): - if struct_type == 'hashtable': - insert_time, structure = measure_insert(data_records, struct_type, params) - else: - insert_time, structure = measure_insert(data_records, struct_type) - insert_times.append(insert_time) - - find_time = measure_find(structure, names_to_find, struct_type) - find_times.append(find_time) - - delete_time, structure = measure_delete(structure, names_to_delete, struct_type) - delete_times.append(delete_time) - - return { - 'structure': struct_type, - 'mode': mode, - 'insert_mean': np.mean(insert_times), - 'insert_std': np.std(insert_times), - 'insert_all': insert_times, - 'find_mean': np.mean(find_times), - 'find_std': np.std(find_times), - 'find_all': find_times, - 'delete_mean': np.mean(delete_times), - 'delete_std': np.std(delete_times), - 'delete_all': delete_times - } \ No newline at end of file