Skip to content

Commit

Permalink
Bench.sh - test graphicsmagick speed and test imagemagick file size
Browse files Browse the repository at this point in the history
  • Loading branch information
lilith committed Apr 22, 2020
1 parent c24a79c commit 6416550
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 10 deletions.
5 changes: 3 additions & 2 deletions docker/imageflow_bench_ubuntu20/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ RUN export DEBIAN_FRONTEND=noninteractive \
&& apt-get install --no-install-recommends -y \
sudo tzdata build-essential nasm dh-autoreconf pkg-config ca-certificates \
git zip curl libpng-dev libssl-dev wget \
libcurl4-openssl-dev libelf-dev libdw-dev parallel time imagemagick \
libcurl4-openssl-dev libelf-dev libdw-dev parallel time imagemagick graphicsmagick \
&& ln -fs /usr/share/zoneinfo/America/Denver /etc/localtime \
&& dpkg-reconfigure --frontend noninteractive tzdata \
&& apt-get clean -y \
Expand Down Expand Up @@ -45,6 +45,7 @@ RUN groupadd 1001 -g 1001 &&\

USER imageflow

RUN gm version
RUN convert --version
RUN vipsthumbnail --vips-version

Expand Down Expand Up @@ -74,7 +75,7 @@ RUN cargo install dssim
RUN cd /home/imageflow \
&& git clone https://github.com/imazen/imageflow \
&& cd /home/imageflow/imageflow \
&& git checkout v1.3.1-rc31 \
&& git checkout v1.3.2-rc32 \
&& TARGET_CPU=haswell cargo build -p imageflow_tool_lib --release \
&& mkdir $HOME/bin \
&& cp target/release/imageflow_tool $HOME/bin/imageflow_tool \
Expand Down
37 changes: 29 additions & 8 deletions docker/imageflow_bench_ubuntu20/bench.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,20 +22,23 @@ done
cd bench_in

if [[ "$1" == "thumbnail" ]]; then
hyperfine --export-markdown results.md --warmup 3 \
'parallel "$HOME/bin/imageflow_tool v0.1/ir4 --in {} --out ../bench_out/{.}_200x200.jpg --command width=\"200&height=200&mode=max&quality=9\"" ::: *.jpg' \
'parallel "vipsthumbnail --linear --size=200x200 --output=../bench_out/{.}_vips_200x200.jpg[Q=90] {}" ::: *.jpg' \
# shellcheck disable=SC2016
hyperfine --export-markdown results.md \
'parallel "$HOME/bin/imageflow_tool v0.1/ir4 --in {} --out ../bench_out/{.}_200x200.jpg --command width=\"200&height=200&mode=max&quality=90&jpeg.turbo=true\"" ::: *.jpg' \
'parallel "vipsthumbnail --linear --size=200x200 --output=../bench_out/{.}_vips_200x200.jpg[Q=90,strip] {}" ::: *.jpg' \
'parallel "gm convert {} -set colorspace sRGB -colorspace RGB -filter Mitchell -resize 200x200 -colorspace sRGB -quality 90 ../bench_out/{.}_gm_200x200.jpg" ::: *.jpg' \
'parallel "convert {} -set colorspace sRGB -colorspace RGB -filter Robidoux -resize 200x200 -colorspace sRGB -quality 90 ../bench_out/{.}_magick_200x200.jpg" ::: *.jpg'

echo "=============== Results in Markdown format ======================"
cat results.md
echo "================================================================="
fi
if [[ "$1" == "downscale" ]]; then
cd bench_in || exit
hyperfine --export-markdown results.md --warmup 3 \
'parallel "$HOME/bin/imageflow_tool v0.1/ir4 --in {} --out ../bench_out/{.}_2000x2000.jpg --command width=\"2000&height=2000&mode=max&quality=90\"" ::: *.jpg' \
# shellcheck disable=SC2016
hyperfine --export-markdown results.md \
'parallel "$HOME/bin/imageflow_tool v0.1/ir4 --in {} --out ../bench_out/{.}_2000x2000.jpg --command width=\"2000&height=2000&mode=max&quality=90&jpeg.turbo=true\"" ::: *.jpg' \
'parallel "vipsthumbnail --linear --size=2000x2000 --output=../bench_out/{.}_vips_2000x2000.jpg[Q=90] {}" ::: *.jpg' \
'parallel "gm convert {} -set colorspace sRGB -colorspace RGB -filter Mitchell -resize 2000x2000 -colorspace sRGB -quality 90 ../bench_out/{.}_gm_0200x0200.jpg" ::: *.jpg' \
'parallel "convert {} -set colorspace sRGB -colorspace RGB -filter Robidoux -resize 2000x2000 -colorspace sRGB -quality 90 ../bench_out/{.}_magick_2000x2000.jpg" ::: *.jpg'

echo "=============== Results in Markdown format ======================"
Expand All @@ -47,20 +50,38 @@ if [[ "$1" == "jpegsize" ]]; then

"$HOME/bin/imageflow_tool" v0.1/ir4 --in c1.jpg --out ../bench_out/imageflow_2000x2000.jpg --command "width=2000&height=2000&mode=max&quality=89" 1>/dev/null
vipsthumbnail --linear --size=2000x2000 --output=../bench_out/vips_2000x2000.jpg[Q=89,strip,optimize-coding] c1.jpg
convert c1.jpg -set colorspace sRGB -colorspace RGB -filter Robidoux -resize 2000x2000 -colorspace sRGB -quality 89 ../bench_out/magick_2000x2000.jpg

"$HOME/bin/imageflow_tool" v0.1/ir4 --in c1.jpg --out ../bench_out/imageflow_reference_2000x2000.png --command "width=2000&height=2000&mode=max&format=png&decoder.min_precise_scaling_ratio=100" 1>/dev/null
"$HOME/bin/imageflow_tool" v0.1/ir4 --in c1.jpg --out ../bench_out/imageflow_reference_2000x2000.png --command "width=2000&height=2000&mode=max&format=png" 1>/dev/null
vipsthumbnail --linear --size=2000x2000 --output=../bench_out/vips_reference_2000x2000.png c1.jpg
convert c1.jpg -set colorspace sRGB -colorspace RGB -filter Robidoux -resize 2000x2000 -colorspace sRGB ../bench_out/magick_reference_2000x2000.png

"$HOME/bin/imageflow_tool" v0.1/ir4 --in ../bench_out/imageflow_2000x2000.jpg --out ../bench_out/imageflow_2000x2000.png --command "format=png" 1>/dev/null
"$HOME/bin/imageflow_tool" v0.1/ir4 --in ../bench_out/vips_2000x2000.jpg --out ../bench_out/vips_2000x2000.png --command "format=png" 1>/dev/null
"$HOME/bin/imageflow_tool" v0.1/ir4 --in ../bench_out/magick_2000x2000.jpg --out ../bench_out/magick_2000x2000.png --command "format=png" 1>/dev/null

echo "=============== DSSIM relative to imageflow reference (lower is better) ======================"
dssim ../bench_out/imageflow_reference_2000x2000.png ../bench_out/imageflow_2000x2000.png
dssim ../bench_out/imageflow_reference_2000x2000.png ../bench_out/vips_2000x2000.png
dssim ../bench_out/imageflow_reference_2000x2000.png ../bench_out/magick_2000x2000.png

echo "=============== DSSIM relative to libvips reference (lower is better) ======================"
dssim ../bench_out/imageflow_reference_2000x2000.png ../bench_out/imageflow_2000x2000.png
dssim ../bench_out/vips_reference_2000x2000.png ../bench_out/imageflow_2000x2000.png
dssim ../bench_out/vips_reference_2000x2000.png ../bench_out/vips_2000x2000.png
dssim ../bench_out/vips_reference_2000x2000.png ../bench_out/magick_2000x2000.png

echo "=============== DSSIM relative to ImageMagick reference (lower is better) ======================"
dssim ../bench_out/magick_reference_2000x2000.png ../bench_out/imageflow_2000x2000.png
dssim ../bench_out/magick_reference_2000x2000.png ../bench_out/vips_2000x2000.png
dssim ../bench_out/magick_reference_2000x2000.png ../bench_out/magick_2000x2000.png

"$HOME/bin/imageflow_tool" v0.1/ir4 --in c1.jpg --out ../bench_out/imageflow_idct_scaling_2000x2000.png --command "width=2000&height=2000&mode=max&format=png" 1>/dev/null
"$HOME/bin/imageflow_tool" v0.1/ir4 --in c1.jpg --out ../bench_out/imageflow_no_idct_scaling_2000x2000.png --command "width=2000&height=2000&mode=max&format=png&decoder.min_precise_scaling_ratio=100" 1>/dev/null

echo "=============== DSSIM with linear IDCT scaling turned on vs. no IDCT scaling ======================"
dssim ../bench_out/imageflow_no_idct_scaling_2000x2000.png ../bench_out/imageflow_idct_scaling_2000x2000.png



echo "=============== File sizes ======================"
ls -l ../bench_out
Expand Down

1 comment on commit 6416550

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New misspellings found, please review:

  • esults
  • graphicsmagick
  • jpegsize
To accept these changes, run the following commands
remove_obsolete_words=$(mktemp)
echo '#!/usr/bin/perl -ni
my $re=join "|", qw('"
jsoref
megapixels
"');
next if /^($re)(?:$| .*)/;
print;' > $remove_obsolete_words
chmod +x $remove_obsolete_words
for file in .github/actions/spell-check/whitelist/42f15d0ed3748dd6a1b8c1f026d297f0625fb5eb.txt .github/actions/spell-check/whitelist/whitelist.txt; do $remove_obsolete_words $file; done
rm $remove_obsolete_words
(
echo "
esults
graphicsmagick
jpegsize
"
) | sort -u -f | perl -ne 'next unless /./; print' > new_whitelist.txt && mv new_whitelist.txt '.github/actions/spell-check/whitelist/6416550672bf9879505f48a4480b7b63db855a0d.txt'

Please sign in to comment.