This commit is contained in:
Lukas Wölfer
2020-02-12 23:45:51 +01:00
parent 7247f465de
commit ca44b8977d
9 changed files with 167 additions and 74 deletions

36
benchmark/util.py Normal file
View File

@@ -0,0 +1,36 @@
import time
from pathlib import Path
import cv2
import shenzhen_solitaire.card_detection.configuration as configuration
import shenzhen_solitaire.solver.solver as solver
from shenzhen_solitaire.card_detection.board_parser import parse_board
def run_benchmark(benchmark: Path) -> str:
result = ""
result += f"{benchmark}:\n"
read_file_time = time.time()
image = cv2.imread(str(benchmark))
load_config_time = time.time()
result += f"\tLoad image: {load_config_time - read_file_time:5.2f}\n"
conf = configuration.load("test_config.zip")
parse_board_time = time.time()
result += f"\tLoad config: {parse_board_time - load_config_time:5.2f}\n"
board = parse_board(image, conf)
solve_time = time.time()
result += f"\tParse image: {solve_time - parse_board_time:5.2f}\n"
solution_iterator = next(solver.solve(board, timeout=10), None)
finished_time = time.time()
result += f"\tSolve board: {finished_time - solve_time:5.2f}\n"
assert board.check_correct()
if solution_iterator is None:
result += "\tSolution timed out\n"
else:
result += f"\tSolved in {len(list(solution_iterator))} steps\n"
return result