Drop GIMP workload; make Inkscape export a tunable subset

GIMP 3 removed/renamed the Script-Fu PDB calls the workload relied on
(plug-in-unsharp-mask, gimp-levels-stretch), so it is removed rather than
maintained as best-effort. Inkscape now exports the first INKSCAPE_FILES SVGs
(default 25) instead of all 121, cutting that step to well under a minute.
This commit is contained in:
smill 2026-09-29 21:51:18 -04:00
commit cc9354e136
133 changed files with 32 additions and 5235 deletions

4
.gitignore vendored
View file

@ -33,3 +33,7 @@ phases-*.csv
power-*.csv power-*.csv
compare-scores.csv compare-scores.csv
*.png *.png
# app corpus extraction outputs (regenerated)
tools/corpus/*-out/
tools/corpus/*-work/

View file

@ -63,7 +63,7 @@ You can run the parts in any order; run both on the same machine back to back.
| `compare-report.py` | Cross-device / before-after results table + one bar chart per benchmark (`results/graphs/compare-*.png`). | | `compare-report.py` | Cross-device / before-after results table + one bar chart per benchmark (`results/graphs/compare-*.png`). |
| `results/` | Created at runtime: CSVs, logs, `results/graphs/*.png`. | | `results/` | Created at runtime: CSVs, logs, `results/graphs/*.png`. |
| `tools/` | Bundled binaries: PassMark (`tools/pt/`). Ships with the kit — no download needed. | | `tools/` | Bundled binaries: PassMark (`tools/pt/`). Ships with the kit — no download needed. |
| `tools/corpus/` | Fixed sample inputs for the app workloads (LibreOffice docs, a GEGL/GIMP photo, Inkscape SVGs), fetched once and checksum-pinned. | | `tools/corpus/` | Fixed sample inputs for the app workloads (LibreOffice docs, a GEGL photo, Inkscape SVGs), fetched once and checksum-pinned. |
--- ---
@ -94,7 +94,7 @@ hardware.
for PassMark. Set `INSTALL_DEPS=0` to never install. for PassMark. Set `INSTALL_DEPS=0` to never install.
- The LLM test needs **no** install: `llama-bench` and its small model are - The LLM test needs **no** install: `llama-bench` and its small model are
bundled under `tools/llama/` (see §4). bundled under `tools/llama/` (see §4).
- The **app workloads** (LibreOffice, GEGL, Inkscape, GIMP; see §4) are optional: - The **app workloads** (LibreOffice, GEGL, Inkscape; see §4) are optional:
each step runs only if its command is installed, otherwise it is skipped and each step runs only if its command is installed, otherwise it is skipped and
listed by `./run-benchmarks.sh doctor`. listed by `./run-benchmarks.sh doctor`.
@ -136,7 +136,7 @@ tools/llama/bin/llama-bench \
``` ```
Override with `LLAMA_MODEL=` (any GGUF), or `LLAMA_NGL=` to offload to GPU. Override with `LLAMA_MODEL=` (any GGUF), or `LLAMA_NGL=` to offload to GPU.
### App workloads — LibreOffice / GEGL / Inkscape / GIMP (optional) ### App workloads — LibreOffice / GEGL / Inkscape (optional)
Stock distro applications are driven over a fixed sample corpus. Each is the Stock distro applications are driven over a fixed sample corpus. Each is the
app's own CLI, timed, named after the benchmark. Install the ones you want to app's own CLI, timed, named after the benchmark. Install the ones you want to
measure: measure:
@ -144,14 +144,12 @@ measure:
sudo dnf install -y libreoffice-writer libreoffice-calc # documents -> PDF sudo dnf install -y libreoffice-writer libreoffice-calc # documents -> PDF
sudo dnf install -y gegl04-tools # GEGL operations sudo dnf install -y gegl04-tools # GEGL operations
sudo dnf install -y inkscape # SVG -> PNG sudo dnf install -y inkscape # SVG -> PNG
sudo dnf install -y gimp # GIMP batch operations (GIMP 3)
``` ```
On first run the corpora are **fetched once** into `tools/corpus/` and On first run the corpora are **fetched once** into `tools/corpus/` and
checksum-verified (`lo-sample-documents-1.zip`, `sample-photo-6000x4000-1.zip`, checksum-verified (`lo-sample-documents-1.zip`, `sample-photo-6000x4000-1.zip`,
`svg-test-files-1.zip`; ~12 MB total), then reused so both sides process identical `svg-test-files-1.zip`; ~12 MB total), then reused so both sides process identical
bytes. Missing apps are skipped; skip the whole group with `RUN_APPS=0`. GIMP 3 bytes. Set INKSCAPE_FILES=N to change how many SVGs Inkscape exports (default 25).
reshaped the Script-Fu API, so the GIMP step picks a version-appropriate script Missing apps are skipped; skip the whole group with `RUN_APPS=0`.
and is best-effort — check `results/gimp-<tag>.txt` if a number looks wrong.
> `run-benchmarks.sh` finds PassMark at `tools/pt/pt_linux_x64` **or** > `run-benchmarks.sh` finds PassMark at `tools/pt/pt_linux_x64` **or**
> `tools/pt/PerformanceTest/PerformanceTest_Linux_x86-64`. Override the location > `tools/pt/PerformanceTest/PerformanceTest_Linux_x86-64`. Override the location
@ -225,8 +223,7 @@ Headless part (`~25-30 min` per pass):
| 6 | llama.cpp generation (`2B`, CPU/RAM) | ~15 s | bundled; token-generation tok/s | | 6 | llama.cpp generation (`2B`, CPU/RAM) | ~15 s | bundled; token-generation tok/s |
| 6b | LibreOffice docs→PDF (20 docs) | ~0.5-1 min | fixed corpus | | 6b | LibreOffice docs→PDF (20 docs) | ~0.5-1 min | fixed corpus |
| 6c | GEGL image ops (9 on one 6000×4000 photo) | ~0.5-1 min | fixed corpus | | 6c | GEGL image ops (9 on one 6000×4000 photo) | ~0.5-1 min | fixed corpus |
| 6d | Inkscape SVG→PNG (fixed set) | ~1-2 min | fixed corpus | | 6d | Inkscape SVG→PNG (first 25) | ~20-30 s | fixed corpus |
| 6e | GIMP batch ops (4) | ~1-2 min | GIMP 3, best-effort |
| 7 | `fio` 4×30 s | 3-4 min | same SSD, control; runs as your user | | 7 | `fio` 4×30 s | 3-4 min | same SSD, control; runs as your user |
| 8 | `stress-ng` 5 min + `turbostat` | ~8 min | thermals/power | | 8 | `stress-ng` 5 min + `turbostat` | ~8 min | thermals/power |
| 9 | `systemd-analyze` | <1 min | informational | | 9 | `systemd-analyze` | <1 min | informational |
@ -334,7 +331,7 @@ a phase marker (exact or substring). Phase names:
env idle PassMark-cpu PassMark-mem 7zip 7zip-1t openssl env idle PassMark-cpu PassMark-mem 7zip 7zip-1t openssl
sysbench-1t sysbench-nt sysbench-mem llama sysbench-1t sysbench-nt sysbench-mem llama
fio-seqread fio-seqwrite fio-randread fio-randwrite fio-seqread fio-seqwrite fio-randread fio-randwrite
thermal-load systemd libreoffice gegl inkscape gimp thermal-load systemd libreoffice gegl inkscape
glmark2 vkmark glmark2 vkmark
``` ```
@ -350,7 +347,6 @@ llama-tg,18.2
libreoffice,3.9 libreoffice,3.9
gegl,1.8 gegl,1.8
inkscape,12.4 inkscape,12.4
gimp,0.33
fio-seqread,2010.4 fio-seqread,2010.4
glmark2,5989 glmark2,5989
``` ```
@ -424,7 +420,6 @@ before-headed`.
| Governor left on `performance` | Shouldn't happen (restored on exit); set it back with `sudo cpupower frequency-set -g powersave`. | | Governor left on `performance` | Shouldn't happen (restored on exit); set it back with `sudo cpupower frequency-set -g powersave`. |
| App step says `skip (… missing)` | That app isn't installed; `sudo dnf install -y <pkg>`, or `RUN_APPS=0` to silence. | | App step says `skip (… missing)` | That app isn't installed; `sudo dnf install -y <pkg>`, or `RUN_APPS=0` to silence. |
| App step says `skip (corpus unavailable)` | Corpus download failed (no curl/wget or no network); re-run with network, or pre-seed `tools/corpus/`. | | App step says `skip (corpus unavailable)` | Corpus download failed (no curl/wget or no network); re-run with network, or pre-seed `tools/corpus/`. |
| GIMP step errors / odd number | GIMP 3 reshaped Script-Fu; inspect `results/gimp-<tag>.txt` (see §4). |
--- ---

View file

@ -31,8 +31,7 @@
5 llama.cpp generation (2B, CPU/RAM) headless script ~15 s bundled; tok/s 5 llama.cpp generation (2B, CPU/RAM) headless script ~15 s bundled; tok/s
5b LibreOffice: 20 documents -> PDF headless script ~1 min fixed corpus 5b LibreOffice: 20 documents -> PDF headless script ~1 min fixed corpus
5c GEGL: 9 image ops (6000x4000) headless script ~1 min fixed corpus 5c GEGL: 9 image ops (6000x4000) headless script ~1 min fixed corpus
5d Inkscape: SVG -> PNG headless script 1-2 min fixed corpus 5d Inkscape: SVG -> PNG (first 25) headless script ~30 s fixed corpus
5e GIMP: 4 batch ops headless script 1-2 min GIMP 3, best-effort
6 fio 4x30s headless script 3-4 min runs as your user 6 fio 4x30s headless script 3-4 min runs as your user
7 stress-ng 5 min + turbostat headless script ~8 min thermals/power 7 stress-ng 5 min + turbostat headless script ~8 min thermals/power
8 systemd-analyze headless script <1 min 8 systemd-analyze headless script <1 min
@ -126,15 +125,15 @@
| tee llama-$TAG.txt | tee llama-$TAG.txt
# -ngl 0 forces CPU/RAM (no GPU offload). Record the tg t/s number. # -ngl 0 forces CPU/RAM (no GPU offload). Record the tg t/s number.
== 5c. APP WORKLOADS (LibreOffice / GEGL / Inkscape / GIMP) == == 5c. APP WORKLOADS (LibreOffice / GEGL / Inkscape) ==
# Stock distro apps run over a fixed sample corpus; run-benchmarks.sh fetches # Stock distro apps run over a fixed sample corpus; run-benchmarks.sh fetches
# the corpus ONCE into tools/corpus/ (checksum-pinned) and times the app's own # the corpus ONCE into tools/corpus/ (checksum-pinned) and times the app's own
# CLI, reporting a rate (items/s, higher is better). Missing apps are skipped. # CLI, reporting a rate (items/s, higher is better). Missing apps are skipped.
sudo dnf install -y libreoffice-writer libreoffice-calc inkscape gegl04-tools gimp sudo dnf install -y libreoffice-writer libreoffice-calc inkscape gegl04-tools
RUN_APPS=1 ./run-benchmarks.sh before headless # default on RUN_APPS=1 ./run-benchmarks.sh before headless # default on
RUN_APPS=0 ./run-benchmarks.sh before headless # skip the group RUN_APPS=0 ./run-benchmarks.sh before headless # skip the group
# Phases / scores are named after the benchmark: libreoffice gegl inkscape gimp. # Phases / scores are named after the benchmark: libreoffice gegl inkscape.
# GIMP 3 reshaped Script-Fu, so the GIMP step is best-effort. # INKSCAPE_FILES=N changes how many SVGs are exported (default 25).
== 7. GPU — DISCRETE RX 6700 XT (same card both runs; HEADED part only) == == 7. GPU — DISCRETE RX 6700 XT (same card both runs; HEADED part only) ==
sudo dnf install -y glmark2 vkmark vulkan-tools mesa-demos sudo dnf install -y glmark2 vkmark vulkan-tools mesa-demos
@ -228,7 +227,7 @@
# App workloads (see == 5c): stock apps + a fixed corpus fetched once into # App workloads (see == 5c): stock apps + a fixed corpus fetched once into
# tools/corpus/ (checksum-pinned). Install only the apps you want to measure. # tools/corpus/ (checksum-pinned). Install only the apps you want to measure.
# sudo dnf install -y libreoffice-writer libreoffice-calc inkscape gegl04-tools gimp # sudo dnf install -y libreoffice-writer libreoffice-calc inkscape gegl04-tools
# PassMark PerformanceTest Linux — free, CLI. Download the Linux x86-64 # PassMark PerformanceTest Linux — free, CLI. Download the Linux x86-64
# zip (https://www.passmark.com/downloads/pt_linux_x64.zip), then: # zip (https://www.passmark.com/downloads/pt_linux_x64.zip), then:
@ -260,7 +259,6 @@
LibreOffice docs->PDF docs/s ______ ______ __% LibreOffice docs->PDF docs/s ______ ______ __%
GEGL image ops ops/s ______ ______ __% GEGL image ops ops/s ______ ______ __%
Inkscape SVG->PNG images/s ______ ______ __% Inkscape SVG->PNG images/s ______ ______ __%
GIMP batch ops ops/s ______ ______ __%
Kernel build sec ______ ______ __% Kernel build sec ______ ______ __%
OpenSSL aes-256-gcm GB/s ______ ______ __% OpenSSL aes-256-gcm GB/s ______ ______ __%
GPU glmark2 score ______ ______ __% GPU glmark2 score ______ ______ __%

View file

@ -54,7 +54,7 @@ disks() {
tool_versions() { tool_versions() {
for c in 7z openssl fio stress-ng sysbench sensors turbostat cpupower \ for c in 7z openssl fio stress-ng sysbench sensors turbostat cpupower \
glmark2 vkmark glxinfo vulkaninfo python3 \ glmark2 vkmark glxinfo vulkaninfo python3 \
libreoffice inkscape gegl gimp; do libreoffice inkscape gegl; do
have "$c" && printf ' %-20s %s\n' "$c" "$("$c" --version 2>&1 | head -1)" have "$c" && printf ' %-20s %s\n' "$c" "$("$c" --version 2>&1 | head -1)"
done done
local pt="$DIR/tools/pt/PerformanceTest/PerformanceTest_Linux_x86-64" local pt="$DIR/tools/pt/PerformanceTest/PerformanceTest_Linux_x86-64"

View file

@ -155,7 +155,6 @@ METRICS = [
("libreoffice", "LibreOffice documents->PDF", "docs/s", True, None), ("libreoffice", "LibreOffice documents->PDF", "docs/s", True, None),
("gegl", "GEGL image operations", "ops/s", True, None), ("gegl", "GEGL image operations", "ops/s", True, None),
("inkscape", "Inkscape SVG->PNG", "img/s", True, None), ("inkscape", "Inkscape SVG->PNG", "img/s", True, None),
("gimp", "GIMP batch operations", "ops/s", True, None),
("fio-seqread", "fio sequential read", "MB/s", True, raw_fio_seqread), ("fio-seqread", "fio sequential read", "MB/s", True, raw_fio_seqread),
("fio-seqwrite", "fio sequential write", "MB/s", True, raw_fio_seqwrite), ("fio-seqwrite", "fio sequential write", "MB/s", True, raw_fio_seqwrite),
("fio-randread", "fio random read 4k", "IOPS", True, raw_fio_randread), ("fio-randread", "fio random read 4k", "IOPS", True, raw_fio_randread),

View file

@ -33,9 +33,10 @@
# GPU_VD=0x1002:0x73df vendor:device hex for Vulkan selection (auto-detected) # GPU_VD=0x1002:0x73df vendor:device hex for Vulkan selection (auto-detected)
# LLAMA_MODEL=/path GGUF for the LLM test (default: bundled model) # LLAMA_MODEL=/path GGUF for the LLM test (default: bundled model)
# LLAMA_NGL=0 GPU layers to offload (0 = CPU/RAM, the default) # LLAMA_NGL=0 GPU layers to offload (0 = CPU/RAM, the default)
# RUN_APPS=1 app workloads: LibreOffice, GEGL, Inkscape, GIMP # RUN_APPS=1 app workloads: LibreOffice, GEGL, Inkscape
# CORPUS=/path where the sample inputs are cached (default ./tools/corpus) # CORPUS=/path where the sample inputs are cached (default ./tools/corpus)
# CORPUS_URL=... base URL the sample corpora are fetched from # CORPUS_URL=... base URL the sample corpora are fetched from
# INKSCAPE_FILES=25 how many SVGs the Inkscape step exports
# GOVERNOR=powersave CPU governor to pin (default performance); an explicit # GOVERNOR=powersave CPU governor to pin (default performance); an explicit
# value is appended to the tag, e.g. after-powersave-headless # value is appended to the tag, e.g. after-powersave-headless
# GLMARK2_DURATION=10 seconds for the glmark2 scene (headed part) # GLMARK2_DURATION=10 seconds for the glmark2 scene (headed part)
@ -392,11 +393,11 @@ doctor() {
printf ' %-22s %s\n' "$t" "$(command -v "$t" || echo MISSING)" printf ' %-22s %s\n' "$t" "$(command -v "$t" || echo MISSING)"
done done
printf 'apps:\n' printf 'apps:\n'
for t in libreoffice inkscape gegl gimp; do for t in libreoffice inkscape gegl; do
printf ' %-22s %s\n' "$t" "$(command -v "$t" || echo MISSING)" printf ' %-22s %s\n' "$t" "$(command -v "$t" || echo MISSING)"
done done
printf 'corpus: %s\n' "$CORPUS" printf 'corpus: %s\n' "$CORPUS"
printf ' install apps: sudo dnf install -y libreoffice-writer libreoffice-calc inkscape gegl04-tools gimp\n' printf ' install apps: sudo dnf install -y libreoffice-writer libreoffice-calc inkscape gegl04-tools\n'
printf 'governor: %s (pinned for timed runs; set GOVERNOR=... to choose)\n' "$GOVERNOR" printf 'governor: %s (pinned for timed runs; set GOVERNOR=... to choose)\n' "$GOVERNOR"
local need; need="$(pkgs_for_missing)" local need; need="$(pkgs_for_missing)"
if [ -z "${need// /}" ]; then if [ -z "${need// /}" ]; then
@ -499,7 +500,7 @@ run_llama() {
} }
# --- app workloads (stock apps + fixed corpora) ------------------------------- # --- app workloads (stock apps + fixed corpora) -------------------------------
# Phases and score names are the benchmark names: libreoffice gegl inkscape gimp. # Phases and score names are the benchmark names: libreoffice gegl inkscape.
# Each registers a rate (items/s) so higher stays better for the score/W table. # Each registers a rate (items/s) so higher stays better for the score/W table.
run_libreoffice() { run_libreoffice() {
@ -568,13 +569,17 @@ run_inkscape() {
c373998bebff0a88f0c4e6fec383eaa62690f544c6eb2b1ad7c55b1547e4db08 inkscape \ c373998bebff0a88f0c4e6fec383eaa62690f544c6eb2b1ad7c55b1547e4db08 inkscape \
|| { printf 'skip (corpus unavailable)\n'; return 0; } || { printf 'skip (corpus unavailable)\n'; return 0; }
local d="$CORPUS/inkscape" out="$CORPUS/inkscape-out" log="inkscape-$TAG.txt" local d="$CORPUS/inkscape" out="$CORPUS/inkscape-out" log="inkscape-$TAG.txt"
local n t0 t1 el r f local n limit t0 t1 el r f
n=$(find "$d" -maxdepth 1 -name '*.svg' 2>/dev/null | wc -l) local -a svgs
mapfile -t svgs < <(find "$d" -maxdepth 1 -name '*.svg' 2>/dev/null | sort)
n="${#svgs[@]}"
[ "$n" -gt 0 ] || { printf 'skip (no SVG in corpus)\n'; return 0; } [ "$n" -gt 0 ] || { printf 'skip (no SVG in corpus)\n'; return 0; }
limit="${INKSCAPE_FILES:-25}" # cap the corpus so the step stays short
[ "$limit" -gt 0 ] 2>/dev/null && [ "$limit" -lt "$n" ] && n="$limit"
rm -rf "$out"; mkdir -p "$out" rm -rf "$out"; mkdir -p "$out"
{ inkscape --version; printf 'export %s SVG files -> PNG\n' "$n"; } > "$log" 2>&1 { inkscape --version; printf 'export %s of %s SVG files -> PNG\n' "$n" "${#svgs[@]}"; } > "$log" 2>&1
t0=$(now) t0=$(now)
for f in "$d"/*.svg; do for f in "${svgs[@]:0:$n}"; do
inkscape --export-filename="$out/$(basename "${f%.svg}").png" "$f" >> "$log" 2>&1 inkscape --export-filename="$out/$(basename "${f%.svg}").png" "$f" >> "$log" 2>&1
done done
t1=$(now) t1=$(now)
@ -584,89 +589,11 @@ run_inkscape() {
reg_score "inkscape" "$r" reg_score "inkscape" "$r"
} }
# GIMP batch Script-Fu. GIMP 3 renamed/reshaped much of the PDB, so pick the
# script for the installed major version. GIMP 3 support is best-effort: verify
# the log if the op count or timing looks off.
gimp_script_v2() {
cat > "$1" <<'SCM'
(define (batch-op op pattern)
(let* ((filelist (cadr (file-glob pattern 1))))
(while (not (null? filelist))
(let* ((filename (car filelist))
(image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
(drawable (car (gimp-image-get-active-layer image))))
(cond ((string=? op "unsharp-mask")
(plug-in-unsharp-mask RUN-NONINTERACTIVE image drawable 15.0 0.6 0))
((string=? op "resize") (gimp-image-scale image 600 400))
((string=? op "rotate") (gimp-image-rotate image 0))
((string=? op "auto-levels") (gimp-levels-stretch drawable)))
(gimp-file-save RUN-NONINTERACTIVE image drawable filename filename)
(gimp-image-delete image))
(set! filelist (cdr filelist)))))
SCM
}
gimp_script_v3() {
cat > "$1" <<'SCM'
(script-fu-use-v3)
(define (batch-op op pattern)
(let* ((filelist (file-glob #:pattern pattern #:filename-encoding TRUE)))
(while (not (null? filelist))
(let* ((filename (car filelist))
(image (gimp-file-load RUN-NONINTERACTIVE filename))
(drawable (vector-ref (gimp-image-get-selected-drawables image) 0)))
(cond ((string=? op "unsharp-mask")
(plug-in-unsharp-mask RUN-NONINTERACTIVE image drawable 15.0 0.6 0))
((string=? op "resize") (gimp-image-scale image 600 400))
((string=? op "rotate") (gimp-image-rotate image 0))
((string=? op "auto-levels") (gimp-levels-stretch drawable)))
(gimp-file-save RUN-NONINTERACTIVE image filename)
(gimp-image-delete image))
(set! filelist (cdr filelist)))))
SCM
}
run_gimp() {
section "APP: GIMP — batch image operations"
phase "gimp"
if ! have gimp; then
printf 'skip (gimp missing) — sudo dnf install -y gimp\n'
return 0
fi
setup_corpus sample-photo-6000x4000-1.zip "$CORPUS_URL/sample-photo-6000x4000-1.zip" \
cadcd434abcdc82a220e7022c749b6fa5f46bb7a32ec14423ca8aab067b0e989 gimp \
|| { printf 'skip (corpus unavailable)\n'; return 0; }
local d="$CORPUS/gimp" src log="gimp-$TAG.txt" w scm gv t0 t1 el r op
src="$(find "$d" -maxdepth 1 -iname '*.jpg' 2>/dev/null | head -1)"
[ -n "$src" ] || { printf 'skip (no JPEG in corpus)\n'; return 0; }
w="$CORPUS/gimp-work"; rm -rf "$w"; mkdir -p "$w"
scm="$w/bench.scm"
gv="$(gimp --version 2>&1 | grep -oE '[0-9]+' | head -1)"; gv="${gv:-3}"
if [ "$gv" -ge 3 ] 2>/dev/null; then gimp_script_v3 "$scm"; else gimp_script_v2 "$scm"; fi
{ gimp --version 2>&1 | head -1; printf '4 ops x 1 image (v%s script)\n' "$gv"; } > "$log"
t0=$(now)
for op in unsharp-mask resize rotate auto-levels; do
cp -f "$src" "$w/sample.JPG"
printf -- '-- %s --\n' "$op" >> "$log"
if [ "$gv" -ge 3 ] 2>/dev/null; then
GIMP3_DIRECTORY="$w/cfg" gimp -i --batch-interpreter=plug-in-script-fu-eval \
-b "(load \"$scm\")" -b "(batch-op \"$op\" \"$w/*.JPG\")" -b '(gimp-quit 0)' >> "$log" 2>&1
else
GIMP2_DIRECTORY="$w/cfg" gimp -i \
-b "(load \"$scm\")" -b "(batch-op \"$op\" \"$w/*.JPG\")" -b '(gimp-quit 0)' >> "$log" 2>&1
fi
done
t1=$(now)
el="$(secs "$t0" "$t1")"; r="$(per_s 4 "$el")"
cat "$log"
printf 'gimp: 4 ops in %ss = %s ops/s\n' "$el" "$r"
reg_score "gimp" "$r"
}
run_apps() { run_apps() {
section "APP WORKLOADS (LibreOffice / GEGL / Inkscape / GIMP)" section "APP WORKLOADS (LibreOffice / GEGL / Inkscape)"
run_libreoffice run_libreoffice
run_gegl run_gegl
run_inkscape run_inkscape
run_gimp
} }
run_headless() { run_headless() {

View file

@ -1,15 +0,0 @@
(script-fu-use-v3)
(define (batch-op op pattern)
(let* ((filelist (file-glob #:pattern pattern #:filename-encoding TRUE)))
(while (not (null? filelist))
(let* ((filename (car filelist))
(image (gimp-file-load RUN-NONINTERACTIVE filename))
(drawable (vector-ref (gimp-image-get-selected-drawables image) 0)))
(cond ((string=? op "unsharp-mask")
(plug-in-unsharp-mask RUN-NONINTERACTIVE image drawable 15.0 0.6 0))
((string=? op "resize") (gimp-image-scale image 600 400))
((string=? op "rotate") (gimp-image-rotate image 0))
((string=? op "auto-levels") (gimp-levels-stretch drawable)))
(gimp-file-save RUN-NONINTERACTIVE image filename)
(gimp-image-delete image))
(set! filelist (cdr filelist)))))

View file

@ -1,35 +0,0 @@
# GIMP gimprc
#
# This is your personal gimprc file. Any variable defined in this file takes
# precedence over the value defined in the system-wide gimprc:
# /etc/gimp/3.0/gimprc
# Most values can be set within GIMP by changing some options in the
# Preferences dialog.
(prev-language "American English")
(config-version "3.2.6")
(import-raw-plug-in "${gimp_plug_in_dir}/plug-ins/file-raw-placeholder/file-raw-placeholder")
(fill-options
(style fg-color)
(custom-style solid-color)
(antialias yes)
(feather no)
(feather-radius 10))
(stroke-options
(style fg-color)
(custom-style solid-color)
(antialias yes)
(feather no)
(feather-radius 10)
(method line)
(width 6)
(unit pixels)
(cap-style butt)
(join-style miter)
(miter-limit 10)
(dash-offset 0)
(dash-info 0)
(emulate-brush-dynamics no))
# end of gimprc

File diff suppressed because it is too large Load diff

View file

@ -1,13 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<tags>
<resource identifier="${gimp_data_dir}/brushes/Round.vbr" checksum="a7f02530d3bc7484c8f9240cbe9c65b1">
<tag>round</tag>
</resource>
<resource identifier="${gimp_data_dir}/brushes/Round-Fuzzy.vbr" checksum="f8cb2466841104a55e42afce4568d103">
<tag>fuzzy</tag>
<tag>round</tag>
</resource>
</tags>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Some files were not shown because too many files have changed in this diff Show more