Lassú vagy, Batman

Akarom mondani a saját fordítású ImageMagick egy bizonyos műveletnél 4x lassabb a RedHat által fordítottnál. Akkor nincs más hátra, mint előre: nyomozni kell.

Kezdetnek:


$ /usr/bin/convert -version
Version: ImageMagick 6.9.10-68 Q16 x86_64 2021-10-14 https://imagemagick.org
Copyright: Š 1999-2019 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP(3.1) 
Delegates (built-in): bzlib cairo fontconfig freetype gslib jng jp2 jpeg lcms ltdl lzma openexr pangocairo png ps rsvg tiff wmf x xml zlib

$ /usr/local/bin/convert -version
Version: ImageMagick 7.1.0-19 Q16-HDRI x86_64 2021-12-22 https://imagemagick.org
Copyright: (C) 1999-2021 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI OpenMP(4.5) 
Delegates (built-in): bzlib freetype jng jpeg lzma png xml zip zlib
Compiler: gcc (10.2)

Hozzászólások

Szerkesztve: 2022. 01. 19., sze – 14:56

Illetve lehet, hogy általában is bele kellene húzzak az optimalizált fordításaba, pl.:


$ time /usr/bin/xz -c /var/log/vmware-vmsvc-root.*.log >/dev/null
real	0m7.905s
user	0m7.445s
sys     0m0.116s

$ time /usr/local/bin/xz -c /var/log/vmware-vmsvc-root.*.log >/dev/null
real	0m22.114s
user	0m22.003s
sys	0m0.108s

Szerk -O2 opciót adtam neki:


$ time /usr/local/bin/xz -c /var/log/vmware-vmsvc-root.*.log >/dev/null

real	0m7.650s
user	0m7.570s
sys     0m0.078s

Akkor, ha jól értem, most szépen mindenkit így kellene forgatni.

Hát, még nem vagyunk a célban...


gyari (/usr/bin/convert): speedtest_gyari.jpg
real	0m0.141s
user	0m0.126s
sys	0m0.024s

sajat (/usr/local/bin/convert): speedtest_sajat.jpg
real	0m0.382s
user	0m0.342s
sys	0m0.056s

Ennek esetleg lehet köze a hiányzó 'delegate'-ekhez?

Most úgy tűnik, hogy a képek feliratozása például mérhetően lassabb:

gyari bmp-feliratozas (/usr/bin/convert): speedtest_bmp_gyari.bmp
real	0m0.110s
user	0m0.097s
sys	0m0.023s

sajat bmp-feliratozas (/usr/bin/convert): speedtest_bmp_sajat.bmp
real	0m0.363s
user	0m0.330s
sys	0m0.054s

Ilyesmi lenne:

TextOptions=(-pointsize 60 \
-font /usr/local/share/fonts/MsTrueType/arial.ttf \
-stroke black \
-fill 'rgba(255,0,0,0.2)' \
-gravity north \
-annotate +0+60 \
"Itt tetszik látni egy szép tájképet" \
-fill 'rgba(255,255,255,0.2)' \
-gravity center \
-annotate +0+0 \
"Érdeklődő turista:
Kiváncsi Kázmér"
-gravity south \
-annotate +0+60 \
"Képmegtekintés dátuma:
$Date")

Mire használod az ImageMagick-et?

És parancssorból kézzel, vagy valamilyen API-n keresztül?

Szervusz, itt fentebb idéztem egy példát, hogy milyen feliratot kell tegyek a tájépekre. Eddig annyit látok, hogy a bmp2jpg, jpg2bmp konverzió nem szignigikánsan lassabb [a házi fordítás a gyárihoz képest], de a feliratozás igen.

Az alkalmazásból külső programként hívom a `convert`-et, bár persze elegánsabb/hatékonyabb lenne az API-n keresztül.