The goal of this repo is to demonstrate performance of libvips library taken in comparison with other image processing systems.
Now the accent on ruby-vips, Ruby bindings for libvips library, is made, but later the number of libraries (and platforms, I hope) will grow.
June 26, 2012 - Status
The repo is a setup phase. Only two scripts for ruby-vips and rmagick are available in ruby/ folder. Please, do not expect all the code working stable and representative.
Benchmarks for 2012.06.26
stanislaw@localhost ~/work/gems/vips-benchmarks $ ./runner images/huge.jpg output/huge.jpg ==== Ruby platform ==== Ruby-vips 0.1.1 built against vips-7.26.7-Tue May 22 02:54:27 EEST 2012 real 0m1.777s user 0m3.259s sys 0m0.099s This is RMagick 2.13.1 ($Date: 2009/12/20 02:33:33 $) Copyright (C) 2009 by Timothy P. Hunter Built with ImageMagick 6.7.7-5 2012-06-24 Q16 http://www.imagemagick.org Built for ruby 1.9.3 Web page: http://rmagick.rubyforge.org Email: firstname.lastname@example.org real 0m2.849s user 0m3.516s sys 0m0.171s ==== ImageMagick ==== Version: ImageMagick 6.7.7-5 2012-06-24 Q16 http://www.imagemagick.org Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC Features: OpenMP + convert 'images/huge.jpg[2360x1720+100+100]' -resize 90x90% -convolve '-1, -1, -1, -1, 16, -1, -1, -1, -1' output/huge.jpg real 0m2.288s user 0m5.393s sys 0m0.256s
Performance test design
The repo has folders ruby/, cpp/ and others, each having platform specific scripts using various libraries available for this platform.
Each script is coded to execute the same scenario (see Scenario section).
Each folder has runner executable script, which runs all the scripts in its directory, for example ruby/runner runs ruby-vips and rmagick.rb scripts one by one.
Root folder contains runner script, containing links to all runner scripts available in repo.
See "Do it yourself" section for how to run benchmark scenario.
Do it yourself
git clone https://github.com/stanislaw/vips-benchmarks cd vips-benchmarks # for all platforms ./runner images/huge.jpg output/huge.jpg # or more specifically for ruby platform: ruby/runner images/huge.jpg output/huge.jpg # for one concrete library: time ruby ruby/ruby-vips.rb images/huge.jpg output/huge.jpg
- Scenario: more solid!
- More libraries for ruby
- More platforms (suggestions are welcome!)
Copyright (c) 2012 Stanislaw Pankevich and (hopefully) John Cupitt.