[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2] GSoC-2023-Ahmet 9c7800659: python format
From: |
Werner Lemberg |
Subject: |
[freetype2] GSoC-2023-Ahmet 9c7800659: python format |
Date: |
Wed, 12 Jul 2023 08:17:01 -0400 (EDT) |
branch: GSoC-2023-Ahmet
commit 9c7800659d96c9fd4c905e821a1ba4fcb56f7cd7
Author: goksu <25721443+goeksu@users.noreply.github.com>
Commit: goksu <25721443+goeksu@users.noreply.github.com>
python format
---
src/tools/ftbench/src/tohtml.py | 172 ++++++++++++++++++++++++++++------------
1 file changed, 122 insertions(+), 50 deletions(-)
diff --git a/src/tools/ftbench/src/tohtml.py b/src/tools/ftbench/src/tohtml.py
index 7a67597f2..80ad6f525 100644
--- a/src/tools/ftbench/src/tohtml.py
+++ b/src/tools/ftbench/src/tohtml.py
@@ -1,13 +1,14 @@
+"""This module converts the benchmark results into a HTML file."""
import os
import re
import sys
# Create the HTML file
-project_root = sys.argv[1]
-benchmark_html = os.path.join(project_root, 'benchmark.html')
+PROJECT_ROOT = sys.argv[1]
+BENCHMARK_HTML = os.path.join(PROJECT_ROOT, "benchmark.html")
# GitLab URL
-gitlab_url = 'https://gitlab.freedesktop.org/freetype/freetype/-/commit/'
+GITLAB_URL = "https://gitlab.freedesktop.org/freetype/freetype/-/commit/"
# CSS style
CSS_STYLE = """
@@ -37,84 +38,155 @@ CSS_STYLE = """
"""
# Directories
-baseline_dir = os.path.join(project_root, 'baseline')
-benchmark_dir = os.path.join(project_root, 'benchmark')
+BASELINE_DIR = os.path.join(PROJECT_ROOT, "baseline")
+BENCHMARK_DIR = os.path.join(PROJECT_ROOT, "benchmark")
-# Open HTML file for writing
-with open(benchmark_html, 'w') as html_file:
- html_file.write(f'<html>\n<head>\n<title>Benchmark
Results</title>\n{CSS_STYLE}</head>\n<body>\n<h1>Benchmark Results</h1>\n')
+# Open HTML file for writing and write the header
+with open(BENCHMARK_HTML, "w") as html_file:
+ html_file.write(
+ f"<html>\n\
+ <head>\n\
+ <title>Benchmark Results</title>\n\
+ {CSS_STYLE}\
+ </head>\n\
+ <body>\n\
+ <h1>Benchmark Results</h1>\n"
+ )
# If it's the info file, we want to handle it differently
- with open(os.path.join(baseline_dir, "info.txt"), 'r') as f:
+ with open(os.path.join(BASELINE_DIR, "info.txt"), "r") as f:
baseline_info = f.readlines()
- with open(os.path.join(benchmark_dir, "info.txt"), 'r') as f:
+ with open(os.path.join(BENCHMARK_DIR, "info.txt"), "r") as f:
benchmark_info = f.readlines()
# Check if commit ids are the same
if baseline_info[1].strip() == benchmark_info[1].strip():
- html_file.write('<h2 class="warning">Warning: Baseline and Benchmark
have the same commit ID</h2>\n')
-
- baseline_info[1] = '<a href="{}{}">{}</a>\n'.format(gitlab_url,
baseline_info[1].strip(), baseline_info[1][:8])
-
- benchmark_info[1] = '<a href="{}{}">{}</a>\n'.format(gitlab_url,
benchmark_info[1].strip(), benchmark_info[1][:8])
+ html_file.write(
+ '<h2 class="warning">Warning: Baseline and Benchmark have the same
commit ID</h2>\n'
+ )
+
+ baseline_info[1] = '<a href="{}{}">{}</a>\n'.format(
+ GITLAB_URL, baseline_info[1].strip(), baseline_info[1][:8]
+ )
- # Write info to HTML
- html_file.write('<h2>Info</h2>\n')
+ benchmark_info[1] = '<a href="{}{}">{}</a>\n'.format(
+ GITLAB_URL, benchmark_info[1].strip(), benchmark_info[1][:8]
+ )
+
+ # Write info table
+ html_file.write("<h2>Info</h2>\n")
html_file.write('<table border="1">\n')
-
html_file.write('<tr><th>Info</th><th>Baseline</th><th>Benchmark</th></tr>\n')
- info_list = ['Parameters', 'Commit ID', 'Commit Date', 'Branch']
- for info, baseline_line, benchmark_line in zip(info_list, baseline_info,
benchmark_info):
- html_file.write('<tr><td
class="col1">{}</td><td>{}</td><td>{}</td></tr>\n'.format(info,
baseline_line.strip(), benchmark_line.strip()))
- html_file.write('</table><br/>')
- html_file.write('*Smaller values mean faster operation<br/>\n')
+
html_file.write("<tr><th>Info</th><th>Baseline</th><th>Benchmark</th></tr>\n")
+ info_list = ["Parameters", "Commit ID", "Commit Date", "Branch"]
+ for info, baseline_line, benchmark_line in zip(
+ info_list, baseline_info, benchmark_info
+ ):
+ html_file.write(
+ '<tr><td class="col1">{}</td><td>{}</td><td>{}</td></tr>\n'.format(
+ info, baseline_line.strip(), benchmark_line.strip()
+ )
+ )
+ html_file.write("</table><br/>")
+ html_file.write("*Smaller values mean faster operation<br/>\n")
# Traverse through the 'baseline' directory
-
- for filename in os.listdir(baseline_dir):
- if filename != 'info.txt':
-
- with open(os.path.join(baseline_dir, filename), 'r') as f:
+ for filename in os.listdir(BASELINE_DIR):
+ if filename != "info.txt":
+ with open(os.path.join(BASELINE_DIR, filename), "r") as f:
baseline_results = f.readlines()
- with open(os.path.join(benchmark_dir, filename), 'r') as f:
+ with open(os.path.join(BENCHMARK_DIR, filename), "r") as f:
benchmark_results = f.readlines()
-
+
# Get font name from within the .txt file
for line in baseline_results:
if line.startswith("ftbench results for font"):
- fontname = line.split('/')[-1].strip("'")[:-2]
+ fontname = line.split("/")[-1]\
+ .strip("'")[:-2]
-
- # Write results to HTML
- html_file.write('<h2>Results for {}</h2>\n'.format(fontname))
+ # Write test column headers
+ html_file.write("<h2>Results for {}</h2>\n".format(fontname))
html_file.write('<table border="1">\n')
- html_file.write('<tr><th>Test</th><th>N</th><th><a
href="{}.txt">Baseline</a> (ms)</th><th> <a href="{}.txt">Benchmark</a>
(ms)</th><th>Difference
(%)</th></tr>\n'.format(os.path.join(baseline_dir,fontname[:-4]),os.path.join(benchmark_dir,fontname[:-4])))
-
- for baseline_line, benchmark_line in zip(baseline_results,
benchmark_results):
- if baseline_line.startswith(' '):
- baseline_match =
re.match(r'\s+(.*?)\s+(\d+\.\d+)\s+ms\s+(\d+)\s', baseline_line)
+ html_file.write(
+ '<tr>\
+ <th>Test</th>\
+ <th>N</th>\
+ <th><a href="{}.txt">Baseline</a> (ms)</th>\
+ <th><a href="{}.txt">Benchmark</a> (ms)</th>\
+ <th>Difference (%)</th>\
+ </tr>\n'.format(
+ os.path.join(BASELINE_DIR, fontname[:-4]),
+ os.path.join(BENCHMARK_DIR, fontname[:-4]),
+ )
+ )
+
+ # Write test results
+ for baseline_line, benchmark_line in zip(
+ baseline_results, benchmark_results
+ ):
+ # Check if line is a test result
+ # Get results by Regex
+ if baseline_line.startswith(" "):
+ baseline_match = re.match(
+ r"\s+(.*?)\s+(\d+\.\d+)\s+ms\s+(\d+)\s", baseline_line
+ )
- benchmark_match =
re.match(r'\s+(.*?)\s+(\d+\.\d+)\s+ms\s+(\d+)\s', benchmark_line)
+ benchmark_match = re.match(
+ r"\s+(.*?)\s+(\d+\.\d+)\s+ms\s+(\d+)\s", benchmark_line
+ )
if baseline_match and benchmark_match:
baseline_value = float(baseline_match.group(2))
benchmark_value = float(benchmark_match.group(2))
# Calculate the percentage difference
- percentage_diff = ((baseline_value - benchmark_value)
/ baseline_value) * 100
-
+ percentage_diff = (
+ (baseline_value - benchmark_value) / baseline_value
+ ) * 100
+
+ # Get itaration number
baseline_n = baseline_match.group(3)
benchmark_n = benchmark_match.group(3)
-
- if(baseline_n == benchmark_n):
+
+ # Check if iteration number is the same
+ if baseline_n == benchmark_n:
total_n = baseline_n
else:
- total_n = baseline_n + " / " + benchmark_n
-
+ total_n = baseline_n +\
+ " / " + benchmark_n
+ # Highlight the faster value
if baseline_value > benchmark_value:
- html_file.write('<tr><td
class="col1">{}</td><td>{}</td><td class="lowlight">{:.2f}</td><td
class="highlight">{:.2f}</td><td>{:.2f}</td></tr>\n'.format(baseline_match.group(1),
total_n,baseline_value, benchmark_value, percentage_diff))
+ html_file.write(
+ '<tr>\
+ <td class="col1">{}</td>\
+ <td>{}</td>\
+ <td class="lowlight">{:.3f}</td>\
+ <td class="highlight">{:.3f}</td>\
+ <td>{:.1f}</td>\
+ </tr>\n'.format(
+ baseline_match.group(1),
+ total_n,
+ baseline_value,
+ benchmark_value,
+ percentage_diff,
+ )
+ )
else:
- html_file.write('<tr><td
class="col1">{}</td><td>{}</td><td class="highlight">{:.2f}</td><td
class="lowlight">{:.2f}</td><td>{:.2f}</td></tr>\n'.format(baseline_match.group(1),
total_n,baseline_value, benchmark_value, percentage_diff))
+ html_file.write(
+ '<tr>\
+ <td class="col1">{}</td>\
+ <td>{}</td>\
+ <td class="highlight">{:.3f}</td>\
+ <td class="lowlight">{:.3f}</td>\
+ <td>{:.1f}</td>\
+ </tr>\n'.format(
+ baseline_match.group(1),
+ total_n,
+ baseline_value,
+ benchmark_value,
+ percentage_diff,
+ )
+ )
- html_file.write('</table><br/>\n')
+ html_file.write("</table><br/>\n")
- html_file.write('<center>Freetype Benchmark</body>\n</html>\n')
+ html_file.write("<center>Freetype Benchmark</center></body>\n</html>\n")
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2] GSoC-2023-Ahmet 9c7800659: python format,
Werner Lemberg <=