From 11f600ea1c282771caaa2c9b66c9e3688adf11fc Mon Sep 17 00:00:00 2001 From: lomakinae Date: Tue, 21 Apr 2026 02:51:51 +0300 Subject: [PATCH] refactor: restructure project and fix relative imports --- lomakinae/docs/data/01/results.csv | 91 ++++++++++++++++++++++++ lomakinae/docs/data/01/src/__init__.py | 0 lomakinae/docs/data/01/src/bench.py | 6 +- lomakinae/docs/data/01/src/experiment.py | 17 +++-- lomakinae/docs/data/01/src/ht.py | 2 +- lomakinae/docs/data/01/src/results.csv | 91 ------------------------ 6 files changed, 106 insertions(+), 101 deletions(-) create mode 100644 lomakinae/docs/data/01/results.csv create mode 100644 lomakinae/docs/data/01/src/__init__.py delete mode 100644 lomakinae/docs/data/01/src/results.csv diff --git a/lomakinae/docs/data/01/results.csv b/lomakinae/docs/data/01/results.csv new file mode 100644 index 0000000..b57393b --- /dev/null +++ b/lomakinae/docs/data/01/results.csv @@ -0,0 +1,91 @@ +structure,mode,operation,run,time_sec +LinkedList,shuffled,insert,1,3.25562 +LinkedList,shuffled,find,1,0.040773 +LinkedList,shuffled,delete,1,0.026344 +HashTable,shuffled,insert,1,0.033497 +HashTable,shuffled,find,1,0.000593 +HashTable,shuffled,delete,1,0.000348 +BST,shuffled,insert,1,0.024071 +BST,shuffled,find,1,0.000218 +BST,shuffled,delete,1,0.000136 +LinkedList,shuffled,insert,2,3.454281 +LinkedList,shuffled,find,2,0.040282 +LinkedList,shuffled,delete,2,0.026526 +HashTable,shuffled,insert,2,0.031691 +HashTable,shuffled,find,2,0.000568 +HashTable,shuffled,delete,2,0.000338 +BST,shuffled,insert,2,0.024978 +BST,shuffled,find,2,0.000213 +BST,shuffled,delete,2,0.000135 +LinkedList,shuffled,insert,3,3.453681 +LinkedList,shuffled,find,3,0.0404 +LinkedList,shuffled,delete,3,0.026843 +HashTable,shuffled,insert,3,0.031902 +HashTable,shuffled,find,3,0.000536 +HashTable,shuffled,delete,3,0.000319 +BST,shuffled,insert,3,0.025369 +BST,shuffled,find,3,0.000219 +BST,shuffled,delete,3,0.000138 +LinkedList,shuffled,insert,4,3.417185 +LinkedList,shuffled,find,4,0.040816 +LinkedList,shuffled,delete,4,0.027023 +HashTable,shuffled,insert,4,0.037826 +HashTable,shuffled,find,4,0.000582 +HashTable,shuffled,delete,4,0.00033 +BST,shuffled,insert,4,0.036423 +BST,shuffled,find,4,0.000227 +BST,shuffled,delete,4,0.00014 +LinkedList,shuffled,insert,5,3.4723 +LinkedList,shuffled,find,5,0.040734 +LinkedList,shuffled,delete,5,0.027866 +HashTable,shuffled,insert,5,0.031981 +HashTable,shuffled,find,5,0.000546 +HashTable,shuffled,delete,5,0.000332 +BST,shuffled,insert,5,0.024578 +BST,shuffled,find,5,0.000227 +BST,shuffled,delete,5,0.000146 +LinkedList,sorted,insert,1,3.271489 +LinkedList,sorted,find,1,0.038886 +LinkedList,sorted,delete,1,0.026646 +HashTable,sorted,insert,1,0.030995 +HashTable,sorted,find,1,0.000625 +HashTable,sorted,delete,1,0.000302 +BST,sorted,insert,1,13.000812 +BST,sorted,find,1,0.128239 +BST,sorted,delete,1,0.06369 +LinkedList,sorted,insert,2,3.384572 +LinkedList,sorted,find,2,0.03915 +LinkedList,sorted,delete,2,0.026683 +HashTable,sorted,insert,2,0.032596 +HashTable,sorted,find,2,0.0006 +HashTable,sorted,delete,2,0.000315 +BST,sorted,insert,2,12.593249 +BST,sorted,find,2,0.10657 +BST,sorted,delete,2,0.058763 +LinkedList,sorted,insert,3,3.27816 +LinkedList,sorted,find,3,0.038938 +LinkedList,sorted,delete,3,0.025567 +HashTable,sorted,insert,3,0.03168 +HashTable,sorted,find,3,0.000631 +HashTable,sorted,delete,3,0.00031 +BST,sorted,insert,3,12.809241 +BST,sorted,find,3,0.110947 +BST,sorted,delete,3,0.062604 +LinkedList,sorted,insert,4,3.277437 +LinkedList,sorted,find,4,0.039812 +LinkedList,sorted,delete,4,0.025627 +HashTable,sorted,insert,4,0.031844 +HashTable,sorted,find,4,0.000917 +HashTable,sorted,delete,4,0.000383 +BST,sorted,insert,4,12.722063 +BST,sorted,find,4,0.111841 +BST,sorted,delete,4,0.060014 +LinkedList,sorted,insert,5,3.261706 +LinkedList,sorted,find,5,0.037981 +LinkedList,sorted,delete,5,0.025241 +HashTable,sorted,insert,5,0.032067 +HashTable,sorted,find,5,0.000742 +HashTable,sorted,delete,5,0.000342 +BST,sorted,insert,5,12.713176 +BST,sorted,find,5,0.108333 +BST,sorted,delete,5,0.059109 diff --git a/lomakinae/docs/data/01/src/__init__.py b/lomakinae/docs/data/01/src/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lomakinae/docs/data/01/src/bench.py b/lomakinae/docs/data/01/src/bench.py index f81e0a4..bccd26f 100644 --- a/lomakinae/docs/data/01/src/bench.py +++ b/lomakinae/docs/data/01/src/bench.py @@ -1,7 +1,7 @@ import time -from ll import ll_insert, ll_find, ll_delete -from ht import ht_new, ht_insert, ht_find, ht_delete -from bst import bst_insert, bst_find, bst_delete +from .ll import ll_insert, ll_find, ll_delete +from .ht import ht_new, ht_insert, ht_find, ht_delete +from .bst import bst_insert, bst_find, bst_delete def _build_ll(records): diff --git a/lomakinae/docs/data/01/src/experiment.py b/lomakinae/docs/data/01/src/experiment.py index 776bd3d..a91bd37 100644 --- a/lomakinae/docs/data/01/src/experiment.py +++ b/lomakinae/docs/data/01/src/experiment.py @@ -1,9 +1,10 @@ import csv import random import sys +from pathlib import Path -from generator import generate_records, shuffle_records, sort_records, sample_existing, sample_nonexistent -from bench import run_once +from .generator import generate_records, shuffle_records, sort_records, sample_existing, sample_nonexistent +from .bench import run_once N = 10000 RUNS = 5 @@ -11,7 +12,8 @@ SEARCH_K = 100 SEARCH_MISSING_K = 10 DELETE_K = 50 sys.setrecursionlimit(15000) - +BASE_DIR = Path(__file__).resolve().parent.parent +RESULT_PATH = BASE_DIR / "results.csv" def run_experiment(records, mode): search_names = sample_existing(records, SEARCH_K) + sample_nonexistent(SEARCH_MISSING_K) @@ -30,7 +32,7 @@ def run_experiment(records, mode): return all_rows -if __name__ == '__main__': +def main_experiment(): random.seed(52) records_base = generate_records(N) @@ -42,12 +44,15 @@ if __name__ == '__main__': rows += run_experiment(records_sorted, 'sorted') header = ['structure', 'mode', 'operation', 'run', 'time_sec'] - output_path = 'results.csv' + output_path = RESULT_PATH with open(output_path, 'w', newline='') as f: writer = csv.writer(f) writer.writerow(header) writer.writerows(rows) - print(f"Done. Results saved to {output_path}") + print(f"Done. Results saved to {output_path.name}") print(f"Total rows: {len(rows)}") + +if __name__ == "__main__": + main_experiment() diff --git a/lomakinae/docs/data/01/src/ht.py b/lomakinae/docs/data/01/src/ht.py index 03247b4..d097bc5 100644 --- a/lomakinae/docs/data/01/src/ht.py +++ b/lomakinae/docs/data/01/src/ht.py @@ -1,4 +1,4 @@ -from ll import ll_insert, ll_find, ll_delete, ll_list_all +from .ll import ll_insert, ll_find, ll_delete, ll_list_all DEFAULT_SIZE = 128 diff --git a/lomakinae/docs/data/01/src/results.csv b/lomakinae/docs/data/01/src/results.csv deleted file mode 100644 index f536eb8..0000000 --- a/lomakinae/docs/data/01/src/results.csv +++ /dev/null @@ -1,91 +0,0 @@ -structure,mode,operation,run,time_sec -LinkedList,shuffled,insert,1,3.146608 -LinkedList,shuffled,find,1,0.038634 -LinkedList,shuffled,delete,1,0.02447 -HashTable,shuffled,insert,1,0.032404 -HashTable,shuffled,find,1,0.000543 -HashTable,shuffled,delete,1,0.000314 -BST,shuffled,insert,1,0.024271 -BST,shuffled,find,1,0.000238 -BST,shuffled,delete,1,0.00014 -LinkedList,shuffled,insert,2,3.360195 -LinkedList,shuffled,find,2,0.038226 -LinkedList,shuffled,delete,2,0.026174 -HashTable,shuffled,insert,2,0.031514 -HashTable,shuffled,find,2,0.000531 -HashTable,shuffled,delete,2,0.000297 -BST,shuffled,insert,2,0.025051 -BST,shuffled,find,2,0.000227 -BST,shuffled,delete,2,0.000134 -LinkedList,shuffled,insert,3,3.298482 -LinkedList,shuffled,find,3,0.038049 -LinkedList,shuffled,delete,3,0.026032 -HashTable,shuffled,insert,3,0.030625 -HashTable,shuffled,find,3,0.000472 -HashTable,shuffled,delete,3,0.000286 -BST,shuffled,insert,3,0.023956 -BST,shuffled,find,3,0.000218 -BST,shuffled,delete,3,0.000128 -LinkedList,shuffled,insert,4,3.342319 -LinkedList,shuffled,find,4,0.038768 -LinkedList,shuffled,delete,4,0.02615 -HashTable,shuffled,insert,4,0.03061 -HashTable,shuffled,find,4,0.000462 -HashTable,shuffled,delete,4,0.000286 -BST,shuffled,insert,4,0.023686 -BST,shuffled,find,4,0.000213 -BST,shuffled,delete,4,0.000132 -LinkedList,shuffled,insert,5,3.376158 -LinkedList,shuffled,find,5,0.039137 -LinkedList,shuffled,delete,5,0.026008 -HashTable,shuffled,insert,5,0.030944 -HashTable,shuffled,find,5,0.000488 -HashTable,shuffled,delete,5,0.000291 -BST,shuffled,insert,5,0.022971 -BST,shuffled,find,5,0.000214 -BST,shuffled,delete,5,0.000135 -LinkedList,sorted,insert,1,3.226524 -LinkedList,sorted,find,1,0.03718 -LinkedList,sorted,delete,1,0.0253 -HashTable,sorted,insert,1,0.030623 -HashTable,sorted,find,1,0.000491 -HashTable,sorted,delete,1,0.000274 -BST,sorted,insert,1,11.323304 -BST,sorted,find,1,0.096899 -BST,sorted,delete,1,0.053995 -LinkedList,sorted,insert,2,3.3209 -LinkedList,sorted,find,2,0.037479 -LinkedList,sorted,delete,2,0.024458 -HashTable,sorted,insert,2,0.030579 -HashTable,sorted,find,2,0.000491 -HashTable,sorted,delete,2,0.000274 -BST,sorted,insert,2,11.633176 -BST,sorted,find,2,0.098893 -BST,sorted,delete,2,0.055018 -LinkedList,sorted,insert,3,3.248168 -LinkedList,sorted,find,3,0.036984 -LinkedList,sorted,delete,3,0.025185 -HashTable,sorted,insert,3,0.03095 -HashTable,sorted,find,3,0.000482 -HashTable,sorted,delete,3,0.000276 -BST,sorted,insert,3,11.457209 -BST,sorted,find,3,0.098241 -BST,sorted,delete,3,0.054005 -LinkedList,sorted,insert,4,3.175529 -LinkedList,sorted,find,4,0.036891 -LinkedList,sorted,delete,4,0.025014 -HashTable,sorted,insert,4,0.030979 -HashTable,sorted,find,4,0.000505 -HashTable,sorted,delete,4,0.000284 -BST,sorted,insert,4,11.49292 -BST,sorted,find,4,0.099439 -BST,sorted,delete,4,0.055095 -LinkedList,sorted,insert,5,3.228069 -LinkedList,sorted,find,5,0.03687 -LinkedList,sorted,delete,5,0.025142 -HashTable,sorted,insert,5,0.031015 -HashTable,sorted,find,5,0.000505 -HashTable,sorted,delete,5,0.00028 -BST,sorted,insert,5,11.420234 -BST,sorted,find,5,0.09862 -BST,sorted,delete,5,0.054981