freetype-commit
[Top][All Lists]
Advanced

[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')



reply via email to

[Prev in Thread] Current Thread [Next in Thread]