Compare commits

..

2 Commits

3 changed files with 12 additions and 8 deletions

View File

@ -3,3 +3,4 @@ beautifulsoup4~=4.12.2
fishhook~=0.2.9
pygame~=2.5.2
requests~=2.31.0
tqdm~=4.66

View File

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

View File

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