Compare commits

..

2 Commits

3 changed files with 12 additions and 8 deletions

View File

@ -2,4 +2,5 @@ bs4~=0.0.1
beautifulsoup4~=4.12.2 beautifulsoup4~=4.12.2
fishhook~=0.2.9 fishhook~=0.2.9
pygame~=2.5.2 pygame~=2.5.2
requests~=2.31.0 requests~=2.31.0
tqdm~=4.66

View File

@ -9,6 +9,7 @@ from bs4 import BeautifulSoup
from .datafiles import JSONFile from .datafiles import JSONFile
from .stopwatch import StopWatch from .stopwatch import StopWatch
from typing import Any, Callable, List, Tuple, Type from typing import Any, Callable, List, Tuple, Type
from tqdm.auto import tqdm
from .tools import get_script_dir from .tools import get_script_dir
BASE_PATH = get_script_dir() BASE_PATH = get_script_dir()
@ -55,10 +56,11 @@ class AOCDay:
if not measure_runtime or case_count < len(self.inputs[part]) - 1: if not measure_runtime or case_count < len(self.inputs[part]) - 1:
answer = self.part_func[part]() answer = self.part_func[part]()
else: else:
stopwatch = StopWatch() stopwatch = StopWatch(auto_start=False)
for _ in range(timeit_number): for _ in tqdm(range(timeit_number), desc=f"Part {part+1}", leave=False):
stopwatch.start()
answer = self.part_func[part]() answer = self.part_func[part]()
stopwatch.stop() stopwatch.stop()
exec_time = stopwatch.avg_string(timeit_number) exec_time = stopwatch.avg_string(timeit_number)
if solution is None: if solution is None:

View File

@ -8,6 +8,7 @@ class StopWatch:
stopped: int | None = None stopped: int | None = None
def __init__(self, auto_start=True): def __init__(self, auto_start=True):
self.total_elapsed = 0
if auto_start: if auto_start:
self.start() self.start()
@ -15,9 +16,9 @@ class StopWatch:
self.started = perf_counter_ns() self.started = perf_counter_ns()
self.stopped = None self.stopped = None
def stop(self) -> float: def stop(self):
self.stopped = perf_counter_ns() self.stopped = perf_counter_ns()
return self.elapsed() self.total_elapsed += self.elapsed()
reset = start reset = start
@ -28,10 +29,10 @@ class StopWatch:
return self.stopped - self.started return self.stopped - self.started
def elapsed_string(self) -> str: def elapsed_string(self) -> str:
return human_readable_time_from_ns(self.elapsed()) return human_readable_time_from_ns(self.total_elapsed)
def avg_elapsed(self, divider: int) -> float: def avg_elapsed(self, divider: int) -> float:
return self.elapsed() / divider return self.total_elapsed / divider
def avg_string(self, divider: int) -> str: def avg_string(self, divider: int) -> str:
return human_readable_time_from_ns(int(self.avg_elapsed(divider))) return human_readable_time_from_ns(int(self.avg_elapsed(divider)))