mirror of
https://github.com/LTTLabsOSS/markbench-tests.git
synced 2026-01-09 14:07:56 -05:00
update cruncher
This commit is contained in:
@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
|
||||
|
||||
Changes are grouped by the date they are merged to the main branch of the repository and are ordered from newest to oldest. Dates use the ISO 8601 extended calendar date format, i.e. YYYY-MM-DD.
|
||||
|
||||
## 2024-06-21
|
||||
|
||||
- Update y-cruncher version, and change parameter to 1b from 5b to loosen memory constraints.
|
||||
- Update y-cruncher to run 5 times and average the score.
|
||||
|
||||
## 2024-02-20
|
||||
|
||||
- Fix type error in DOTA2 `read_config` utility function
|
||||
|
||||
@@ -9,7 +9,7 @@ from subprocess import Popen
|
||||
|
||||
sys.path.insert(1, os.path.join(sys.path[0], ".."))
|
||||
|
||||
from ycruncher_utils import YCRUNCHER_FOLDER_NAME, download_ycruncher, ycruncher_folder_exists
|
||||
from ycruncher_utils import YCRUNCHER_FOLDER_NAME, current_time_ms, download_ycruncher, ycruncher_folder_exists
|
||||
|
||||
ABS_EXECUTABLE_PATH = os.path.join(os.path.dirname(
|
||||
os.path.realpath(__file__)), YCRUNCHER_FOLDER_NAME, "y-cruncher.exe")
|
||||
@@ -29,6 +29,7 @@ console.setFormatter(formatter)
|
||||
logging.getLogger('').addHandler(console)
|
||||
|
||||
if ycruncher_folder_exists() is False:
|
||||
logging.info("Downloading ycruncher")
|
||||
download_ycruncher()
|
||||
|
||||
# omit the first arg which is the script name
|
||||
@@ -36,42 +37,57 @@ args = sys.argv[1:]
|
||||
logging.info(args)
|
||||
command = f'{ABS_EXECUTABLE_PATH}'
|
||||
command = command.rstrip()
|
||||
arg_string = ['skip-warnings', 'bench', '5b', '-o',
|
||||
arg_string = ['skip-warnings', 'bench', '1b', '-o',
|
||||
os.path.join(os.path.dirname(os.path.realpath(__file__)), 'run')]
|
||||
|
||||
logging.info(arg_string)
|
||||
with Popen(executable=command, args=arg_string) as process:
|
||||
EXIT_CODE = process.wait()
|
||||
scores = []
|
||||
tunings = []
|
||||
start_time = current_time_ms()
|
||||
for i in range(5):
|
||||
with Popen(executable=command, args=arg_string) as process:
|
||||
EXIT_CODE = process.wait()
|
||||
|
||||
if EXIT_CODE > 0:
|
||||
logging.error("Test failed!")
|
||||
sys.exit(EXIT_CODE)
|
||||
if EXIT_CODE > 0:
|
||||
logging.error("Test failed!")
|
||||
sys.exit(EXIT_CODE)
|
||||
|
||||
list_of_files = glob.glob(os.path.join(
|
||||
os.path.dirname(os.path.realpath(__file__)), 'run', '*.txt'))
|
||||
latest_file = max(list_of_files, key=os.path.getctime)
|
||||
print(latest_file)
|
||||
list_of_files = glob.glob(os.path.join(
|
||||
os.path.dirname(os.path.realpath(__file__)), 'run', '*.txt'))
|
||||
latest_file = max(list_of_files, key=os.path.getctime)
|
||||
print(latest_file)
|
||||
|
||||
with open(os.path.join(os.path.dirname(
|
||||
with open(os.path.join(os.path.dirname(
|
||||
os.path.realpath(__file__)), 'run', latest_file), "r", encoding="utf-8") as file:
|
||||
Lines = file.readlines()
|
||||
Lines = file.readlines()
|
||||
|
||||
TIME_PATTERN = r'^.*:\s*(.*) seconds$'
|
||||
TUNE_PATTERN = r'^.*:\s*(.*)$'
|
||||
TIME = ""
|
||||
TUNING = ""
|
||||
TIME_PATTERN = r'^.*:\s*(.*) seconds$'
|
||||
TUNE_PATTERN = r'^.*:\s*(.*)$'
|
||||
TIME = ""
|
||||
TUNING = ""
|
||||
|
||||
# Strips the newline character
|
||||
for line in Lines:
|
||||
if 'Total Computation Time' in line:
|
||||
time = re.match(TIME_PATTERN, line).group(1)
|
||||
if 'Tuning:' in line:
|
||||
tuning = re.match(TUNE_PATTERN, line).group(1)
|
||||
# Strips the newline character
|
||||
for line in Lines:
|
||||
if 'Total Computation Time' in line:
|
||||
time = re.match(TIME_PATTERN, line).group(1)
|
||||
scores.append(float(time))
|
||||
if 'Tuning:' in line:
|
||||
tuning = re.match(TUNE_PATTERN, line).group(1)
|
||||
tunings.append(tuning)
|
||||
end_time = current_time_ms()
|
||||
|
||||
score_sum = 0
|
||||
for score in scores:
|
||||
score_sum += score
|
||||
avg_score = round(score_sum / len(scores), 2)
|
||||
|
||||
report = {
|
||||
"score": time,
|
||||
"start_time": start_time,
|
||||
"version": "v0.8.4.9538a 1b",
|
||||
"end_time": end_time,
|
||||
"score": avg_score,
|
||||
"unit": "seconds",
|
||||
"test": tuning
|
||||
"test": tunings[0]
|
||||
}
|
||||
|
||||
with open(os.path.join(log_dir, "report.json"), "w", encoding="utf-8") as report_file:
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
"""Collection of functions to assist in running of ycruncher test script"""
|
||||
import os
|
||||
import time
|
||||
from zipfile import ZipFile
|
||||
|
||||
import requests
|
||||
|
||||
YCRUNCHER_FOLDER_NAME = "y-cruncher v0.8.2.9522"
|
||||
YCRUNCHER_ZIP_NAME = "y-cruncher v0.8.2.9522.zip"
|
||||
YCRUNCHER_FOLDER_NAME = "y-cruncher v0.8.4.9538a"
|
||||
YCRUNCHER_ZIP_NAME = "y-cruncher 0.8.4.9538a.zip"
|
||||
|
||||
SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
def ycruncher_folder_exists() -> bool:
|
||||
@@ -15,11 +17,14 @@ def ycruncher_folder_exists() -> bool:
|
||||
|
||||
def download_ycruncher():
|
||||
"""Download and extract Y-Cruncher"""
|
||||
download_url = "http://www.numberworld.org/y-cruncher/old_versions/y-cruncher%20v0.8.2.9522.zip"
|
||||
download_url = "https://github.com/Mysticial/y-cruncher/releases/download/v0.8.4.9538a/y-cruncher.v0.8.4.9538a.zip"
|
||||
destination = os.path.join(SCRIPT_DIR, YCRUNCHER_ZIP_NAME)
|
||||
response = requests.get(download_url, allow_redirects=True, timeout=180)
|
||||
with open(destination, 'wb') as file:
|
||||
file.write(response.content)
|
||||
with ZipFile(destination, 'r') as zip_object:
|
||||
zip_object.extractall(path=SCRIPT_DIR)
|
||||
|
||||
def current_time_ms():
|
||||
return int(time.time() * 1000)
|
||||
|
||||
Reference in New Issue
Block a user