[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2] GSoC-2023-Ahmet 0e87ae09a 2/4: files optimized
From: |
Werner Lemberg |
Subject: |
[freetype2] GSoC-2023-Ahmet 0e87ae09a 2/4: files optimized |
Date: |
Mon, 12 Jun 2023 10:45:37 -0400 (EDT) |
branch: GSoC-2023-Ahmet
commit 0e87ae09a60ec6ef8da3504e31a5833df38dbe8c
Author: goksu <25721443+goeksu@users.noreply.github.com>
Commit: goksu <25721443+goeksu@users.noreply.github.com>
files optimized
---
src/tools/ftbench/Makefile | 19 ++++++--
.../ftbench/fonts/{sub.sh => tool/subsetter.sh} | 0
src/tools/ftbench/ftbench.c | 2 +-
src/tools/ftbench/{ => src}/mlgetopt.h | 0
src/tools/ftbench/src/tohtml.py | 53 ++++++++++++++++++++++
5 files changed, 68 insertions(+), 6 deletions(-)
diff --git a/src/tools/ftbench/Makefile b/src/tools/ftbench/Makefile
index a8211ebd5..2d84063f4 100644
--- a/src/tools/ftbench/Makefile
+++ b/src/tools/ftbench/Makefile
@@ -1,10 +1,12 @@
# Variables
FTBENCH_SRC = ftbench.c
-FTBENCH_BIN = bench.out
+FTBENCH_BIN = bench
FTBENCH_FLAGS = $(shell pkg-config --cflags freetype2) -lfreetype
FONTS = $(wildcard fonts/*.ttf)
BASELINES = $(addprefix baselines/, $(notdir $(FONTS)))
BENCHMARKS = $(addprefix benchmarks/, $(notdir $(FONTS)))
+PYTHON = python3
+HTMLCREATOR = src/tohtml.py
# Default target
all: $(FTBENCH_BIN)
@@ -12,6 +14,7 @@ all: $(FTBENCH_BIN)
# Build ftbench
$(FTBENCH_BIN): $(FTBENCH_SRC)
gcc $(FTBENCH_FLAGS) $(FTBENCH_SRC) -o $(FTBENCH_BIN)
+ @echo "Built."
# Create directories for baselines and benchmarks
baselines/ benchmarks/:
@@ -23,6 +26,7 @@ baseline: $(FTBENCH_BIN) baselines/
$(foreach font, $(FONTS), \
./$(FTBENCH_BIN) $(font) > baselines/$(notdir $(font)).txt; \
)
+ @echo "baseline created"
# Benchmark and compare to baseline
.PHONY: benchmark
@@ -30,11 +34,16 @@ benchmark: $(FTBENCH_BIN) benchmarks/
$(foreach font, $(FONTS), \
./$(FTBENCH_BIN) $(font) > benchmarks/$(notdir $(font)).txt; \
)
- $(foreach font, $(FONTS), \
- diff baselines/$(notdir $(font)).txt benchmarks/$(notdir
$(font)).txt; \
- )
+ $(PYTHON) $(HTMLCREATOR)
+ @echo "benchmark created."
+
+.PHONY: page
+page: benchmarks/ baselines/
+ $(PYTHON) $(HTMLCREATOR)
+ @echo "HTML page of the benchmark created."
.PHONY: clean
clean:
rm -f $(FTBENCH_BIN)
- rm -rf baselines/ benchmarks/
+ rm -rf baselines/ benchmarks/ *.html
+ @echo "cleaned."
\ No newline at end of file
diff --git a/src/tools/ftbench/fonts/sub.sh
b/src/tools/ftbench/fonts/tool/subsetter.sh
similarity index 100%
rename from src/tools/ftbench/fonts/sub.sh
rename to src/tools/ftbench/fonts/tool/subsetter.sh
diff --git a/src/tools/ftbench/ftbench.c b/src/tools/ftbench/ftbench.c
index 2f0f2a4e6..13cfd9b0d 100644
--- a/src/tools/ftbench/ftbench.c
+++ b/src/tools/ftbench/ftbench.c
@@ -40,7 +40,7 @@
#ifdef UNIX
#include <unistd.h>
#else
-#include "mlgetopt.h"
+#include "src/mlgetopt.h"
#endif
#ifdef _WIN32
diff --git a/src/tools/ftbench/mlgetopt.h b/src/tools/ftbench/src/mlgetopt.h
similarity index 100%
rename from src/tools/ftbench/mlgetopt.h
rename to src/tools/ftbench/src/mlgetopt.h
diff --git a/src/tools/ftbench/src/tohtml.py b/src/tools/ftbench/src/tohtml.py
new file mode 100644
index 000000000..0076acb92
--- /dev/null
+++ b/src/tools/ftbench/src/tohtml.py
@@ -0,0 +1,53 @@
+import os
+import re
+
+# Create the HTML file
+with open('benchmark_results.html', 'w') as f:
+ f.write('<html>\n')
+ f.write('<head>\n')
+ f.write('<title>Benchmark Results</title>\n')
+ f.write('</head>\n')
+ f.write('<body>\n')
+ f.write('<h1>Benchmark Results</h1>\n')
+
+ # Traverse through the 'baselines' directory
+ for filename in os.listdir('baselines'):
+ baseline_filepath = os.path.join('baselines', filename)
+ benchmark_filepath = os.path.join('benchmarks', filename)
+
+ # Process the baseline file
+ with open(baseline_filepath, 'r') as baseline_file:
+ baseline_lines = baseline_file.readlines()
+
+ # Process the benchmark file
+ with open(benchmark_filepath, 'r') as benchmark_file:
+ benchmark_lines = benchmark_file.readlines()
+
+ f.write(f'<h2>Results for {filename}</h2>\n')
+ f.write('<table border="1">\n')
+ f.write('<tr><th>Test</th><th>Baseline</th><th>Current</th></tr>\n')
+
+ # For each line in the baseline and benchmark files
+ for baseline_line, benchmark_line in zip(baseline_lines,
benchmark_lines):
+ # If the line starts with a space, it's a test result line
+ if baseline_line.startswith(' '):
+ # Extract the test name, the time per operation, and the
number of operations done
+ baseline_match = re.match(r'
(\w+(\s\(\w+\))?)\s+(\d+\.\d+)\s', baseline_line)
+ benchmark_match = re.match(r'
(\w+(\s\(\w+\))?)\s+(\d+\.\d+)\s', benchmark_line)
+
+ # If the line could be parsed
+ if baseline_match and benchmark_match:
+ # Check which value is higher
+ baseline_value = float(baseline_match.group(3))
+ benchmark_value = float(benchmark_match.group(3))
+
+ # Write the test result to the HTML file
+ if baseline_value > benchmark_value:
+ f.write(f'<tr><td>{baseline_match.group(1)}</td><td
style="background-color:
green;">{baseline_match.group(3)}</td><td>{benchmark_match.group(3)}</td></tr>\n')
+ else:
+
f.write(f'<tr><td>{baseline_match.group(1)}</td><td>{baseline_match.group(3)}</td><td
style="background-color: green;">{benchmark_match.group(3)}</td></tr>\n')
+
+ f.write('</table>\n')
+
+ f.write('</body>\n')
+ f.write('</html>\n')
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2] GSoC-2023-Ahmet 0e87ae09a 2/4: files optimized,
Werner Lemberg <=