Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork723
Benchmarks
This benchmark is useful for testing the VIPS multi-threading system, for comparing generations of processorsand for testing for performance regressions orimprovements between versions of VIPS. We have a separate set of benchmarkscomparing VIPS to other image processing systems on theSpeed-and-memory-use page.
VIPS (from version 7.11.12) includes a benchmark adapted from the system usedto generate images for The National Gallery'sPrint on Demandservice. ThePARSECBenchmark Suite includes this benchmarkas one of their tests. There's a description of the benchmark, includingsome detail on application and performance, in thePARSEC TecnicalReport.
In this benchmark images from a 10k by 10k studio digital camera are colourprocessed, resized, cropped and sharpened. You can see theexact sequence of operations the benchmark performs in thesourcecode.This was originally processing images from a remote server over a 100Mbit/s network. No attempt was made to make it quick (there was no point);you could makeim_benchmark() a lot faster very easily if that was your aim.In 2020 the time taken has reduced to less than 0.5s so it may become harder to measure from nowwithout increasing its workload and scaling.
Interesting things to learn from these include the fact that a slightly slower CPU with more cores is better (also less complex to keep cool!) -- for example the i7 6700K is slower than the 6 core 3930K. Also that Hyperthreading is not very useful for float-intensive tasks such as this.The speed-up in the table is the speed-up compared to running one thread (on one core). Most CPUs now clock faster in this case, which skews the results. On intel CPUs -O2 is slightly faster than -O3.
After building and installing vips, try:
cd vips-x.y.zcd benchmark./benchmarkn.shAnd see results for your system. Feel free to email them tokm@ecs.soton.ac.uk for inclusion here.
| Processor | Clock (GHz) | Cores | Real Time (s) | Speedup |
|---|---|---|---|---|
| Ryzen 7950x | 5.4 | 16 (32ht) | 0.15 | 9.5 x |
| Ryzen 7900x | 5.4 | 12 (24ht) | 0.18 | 7.8 x |
| Ryzen Threadripper 3970x | 3.7 | 32 (64ht) | 0.20 | 10 x |
| Ryzen Threadripper 3955x | 4.3 | 16 (32ht) | 0.22 | 10 x |
| i7-10700K | 4.8-5 | 8 (16ht) | 0.40 | 5.7 x |
| E5-2630V3 dual | 2.4 | 2x8 (32ht) | 0.44 | 8.4 x |
| Ryzen 7 3700X | 3.6 | 8 (16ht) | 0.44 | 5.6 |
| AMD EPYC 7401P | 2 | 24 | 0.48 | 10.2 x |
| i9-9900K | 5 | 8 (16ht) | 0.55 | 4.4 x |
| E5-2695V3 dual | 2.3 | 28 (56 ht) | 0.56 | 10.4 x |
| i7-6700K | 4.4 | 4 (8 ht) | 0.7 | 4 x |
| i7-3930K | 3.2 | 6 (12 ht) | 0.79 | 5.9 x |
| dual E5649 6core | 2.5 | 12 (24 ht) | 0.80 | 10.8 x |
| E5-1650 | 3.2 | 6 (12 ht) | 0.87 | 5.94 x |
| i7-6700 | 3.2 | 4 (8 ht) | 0.89 | 3.3 x |
| i7-8550U (XPS laptop) | 1.8 | 4 (8 ht) | 0.91 | 3.2 x |
| Xeon X5560 | 2.8 | 8 (16 ht) | 1.08 | 13 x |
| Itanium2 | ? | 64 | 1.1 (est.) | 39.4 x |
| Intel i7 MacBook Pro | 2.6 | 4 (8HT) | 1.31 | 3.7 x |
| i5-3470S (iMac 27") | 2.9 | 4 | 1.47 | 3.1 x |
| Xeon E5402 (64 bit) | 2.0 | 8 | 1.88 | 7.3 x |
| Opteron 8220 (64 bit) | 3.0 | 8 | 1.96 | 7.6 x |
| Phenom II X6 | 3.2 | 6 | 2.39 | 4 x |
| i7-3540m laptop (64b) | 3.0 | 2 (4ht) | 2.58 | 2.2 x |
| Dual quad-core intel (64 bit) | 3.0 | 8 | 2.8 | 7 x |
| i5-3210M | 2.5 | 2 (4 ht) | 3.51 | 1.8 x |
| Core 2 Extreme Quad (32 bit) | 2.66 | 4 | 3.69 | 3.8 x |
| i5-5200U | 2.20 | 2 (4 ht) | 3.75 | 1.9 x |
| Opteron 850 (HP server) | 2.4 | 4 | 4.25 | 3.7 x |
| Raspberry Pi4 (Pi OS) | 1.5 | 4 | 5.13 | 3.1 x |
| Core 2 Duo (MacBook) | 2.26 | 2 | 5.81 | 1.9 x |
| Opteron 254 (HP workstation) | 2.7 | 2 | 6.14 | 1.9 x |
| P4 Xeon (64 bit) | 3.6 | 2 (4 ht) | 7 | 2.4 x |
| Core Duo (iMac) | 2.0 | 2 | 11.5 | 1.85 x |
| ARM A15Exynos 5 Chromebook | 1.7 | 2 | 12.6 | 1.7 x |
| P4 Xeon (32 bit) | 3.0 | 2 (4 ht) | 19.7 | 1.6 x |
| ARM Exynos 5420 (-O0) | 1.8-9 or 1.3 | 8 (4 big + 4 little) | 21.31 | 2.2x |
| ARM A7 quad core Raspberry Pi 2 B (32 bit) | 1 | 4 | 21.6 | 3.9 x |
| PM (HP laptop) | 1.8 | 1 | 31.8 | -- |
| P4 (Dell desktop) | 2.4 | 1 | 36.6 | -- |
| EeePC atom/ssd | 1.6 | 1 (2 ht) | 41.5 | 1.6 x |
Time is lowest real time (wall clock time) in seconds,Speedup is(real-all-cpu-time / real-1-cpus-time) in other words speedup using all coresrather than just one. When we say CPUs - these days that really means "cores".
The results we've collected. Please paste more here.
For each one we've noteduname -a,gcc --version andvips --version.
Linux banana 5.8.0-53-generic #60-Ubuntu SMP Thu May 6 07:46:32 UTC 2021 x86_64 x86_64 x86_64 GNU/Linuxgcc (Ubuntu 10.2.0-13ubuntu1) 10.2.0Copyright (C) 2020 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.vips-8.11.0-Fri May 14 15:50:05 UTC 2021building test image ...tile=13test image is 3770 by 5746 pixelsmax cpus = 32starting benchmark .../usr/bin/time -f %e vips --vips-concurrency=xx im_benchmarkn temp.v temp2.v 1reported real-time is best of three runscpus real-time1 2.272 1.193 0.834 0.645 0.516 0.447 0.398 0.349 0.3210 0.2911 0.2812 0.2813 0.2514 0.2515 0.2416 0.2417 0.2418 0.2519 0.2520 0.2221 0.2222 0.2323 0.2324 0.2325 0.2326 0.2327 0.2228 0.2429 0.2430 0.2431 0.2332 0.25$ ./benchmarkn.sh Linux yingna 4.13.0-25-generic #29-Ubuntu SMP Mon Jan 8 21:14:41 UTC 2018 x86_64 x86_64 x86_64 GNU/Linuxgcc (Ubuntu 7.2.0-8ubuntu3) 7.2.0Copyright (C) 2017 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.vips-8.7.0-Fri Jan 5 16:29:51 UTC 2018building test image ...tile=13test image is 3770 by 5746 pixelsmax cpus = 8starting benchmark .../usr/bin/time -f %e vips --vips-concurrency=xx im_benchmarkn temp.v temp2.v 1reported real-time is best of three runscpus real-time1 2.902 1.533 1.164 0.895 0.956 0.847 0.938 0.91$ ./benchmarkn.shLinux oleg 3.10.7 #1 SMP Sat Aug 17 17:06:03 EEST 2013 x86_64 x86_64 x86_64 GNU/Linuxgcc (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3Copyright (C) 2012 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.vips-7.34.2-Sat Aug 17 14:17:10 EEST 2013building test image ...tile=13test image is 3770 by 5746 pixelsmax cpus = 12starting benchmark .../usr/bin/time -f %e vips --vips-concurrency=xx im_benchmarkn temp.v temp2.v 1reported real-time is best of three runscpus real-time1 4.692 2.503 1.724 1.385 1.166 0.917 0.978 0.819 0.7910 0.8611 0.8612 0.83Mid-range 2013 HP workstation.
$ ./benchmarkn.sh Linux mm-jcupitt3 3.8.0-27-generic #40-Ubuntu SMP Tue Jul 9 00:17:05 UTC 2013 x86_64 x86_64 x86_64 GNU/Linuxgcc (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3Copyright © 2012 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.vips-7.34.2-Mon Aug 5 12:31:56 BST 2013building test image ...tile=13test image is 3770 by 5746 pixelsmax cpus = 12starting benchmark .../usr/bin/time -f %e vips --vips-concurrency=xx im_benchmarkn temp.v temp2.v 1reported real-time is best of three runscpus real-time1 5.172 2.883 2.184 2.045 1.796 1.407 1.628 0.979 1.5510 1.5311 0.8712 1.23A cheap Dell laptop from 2012.
Linux bambam 3.11.0-13-generic #20-Ubuntu SMP Wed Oct 23 07:38:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linuxgcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1Copyright (C) 2013 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.vips-7.37.0-Fri Nov 29 22:34:55 GMT 2013building test image ...tile=13test image is 3770 by 5746 pixelsmax cpus = 4starting benchmark .../usr/bin/time -f %e vips --vips-concurrency=xx im_benchmarkn temp.v temp2.v 1reported real-time is best of three runscpus real-time1 6.452 4.253 3.514 3.65gcc (Ubuntu 4.3.3-5ubuntu4) 4.3.3vips-7.18.1-Fri May 8 15:01:54 BST 2009IM_CONCURRENCY=113.25user 0.36system 0:13.97elapsed 97%CPU (0avgtext+0avgdata 0maxresident)k368inputs+126936outputs (3major+34118minor)pagefaults 0swaps13.15user 0.39system 0:13.98elapsed 96%CPU (0avgtext+0avgdata 0maxresident)k0inputs+126936outputs (0major+34121minor)pagefaults 0swapsIM_CONCURRENCY=213.31user 0.31system 0:07.02elapsed 193%CPU (0avgtext+0avgdata 0maxresident)k0inputs+126944outputs (0major+29047minor)pagefaults 0swaps9.50user 0.19system 0:04.99elapsed 194%CPU (0avgtext+0avgdata 0maxresident)k0inputs+126936outputs (0major+38221minor)pagefaults 0swapsIM_CONCURRENCY=310.38user 0.29system 0:03.69elapsed 288%CPU (0avgtext+0avgdata 0maxresident)k0inputs+126936outputs (0major+29355minor)pagefaults 0swaps8.76user 0.22system 0:03.18elapsed 282%CPU (0avgtext+0avgdata 0maxresident)k0inputs+126936outputs (0major+29056minor)pagefaults 0swapsIM_CONCURRENCY=49.40user 0.32system 0:02.48elapsed 390%CPU (0avgtext+0avgdata 0maxresident)k0inputs+126936outputs (0major+28875minor)pagefaults 0swaps13.51user 0.21system 0:03.55elapsed 385%CPU (0avgtext+0avgdata 0maxresident)k0inputs+126936outputs (0major+28957minor)pagefaults 0swapsIM_CONCURRENCY=58.68user 0.19system 0:01.86elapsed 475%CPU (0avgtext+0avgdata 0maxresident)k0inputs+126936outputs (0major+28349minor)pagefaults 0swaps7.71user 0.20system 0:01.74elapsed 454%CPU (0avgtext+0avgdata 0maxresident)k0inputs+126936outputs (0major+36092minor)pagefaults 0swaps120.151IM_CONCURRENCY=69.10user 0.13system 0:01.75elapsed 526%CPU (0avgtext+0avgdata 0maxresident)k0inputs+126936outputs (0major+33039minor)pagefaults 0swaps9.81user 0.16system 0:01.79elapsed 556%CPU (0avgtext+0avgdata 0maxresident)k0inputs+126936outputs (0major+31385minor)pagefaults 0swapsIM_CONCURRENCY=710.69user 0.26system 0:01.72elapsed 636%CPU (0avgtext+0avgdata 0maxresident)k8inputs+126936outputs (0major+33137minor)pagefaults 0swaps8.64user 0.24system 0:01.38elapsed 643%CPU (0avgtext+0avgdata 0maxresident)k0inputs+126936outputs (0major+34416minor)pagefaults 0swapsIM_CONCURRENCY=810.25user 0.26system 0:01.56elapsed 671%CPU (0avgtext+0avgdata 0maxresident)k0inputs+126936outputs (0major+30208minor)pagefaults 0swaps9.55user 0.30system 0:01.39elapsed 707%CPU (0avgtext+0avgdata 0maxresident)k0inputs+126936outputs (0major+32512minor)pagefaults 0swapsIM_CONCURRENCY=98.74user 0.26system 0:01.08elapsed 831%CPU (0avgtext+0avgdata 0maxresident)k8inputs+126936outputs (0major+34851minor)pagefaults 0swaps8.55user 0.17system 0:01.14elapsed 758%CPU (0avgtext+0avgdata 0maxresident)k0inputs+126944outputs (0major+32756minor)pagefaults 0swapscc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-44)vips-7.18.1-Tue May 12 14:18:37 BST 2009building test image ...tile=13test image is 3770 by 5746 pixelsstarting benchmark ...chain=1IM_CONCURRENCY=1time -p vips im_benchmarkn temp.v temp2.v 1real0m13.802suser0m13.664ssys0m0.287sreal0m13.882suser0m13.714ssys0m0.303svips im_avg temp2.v120.151IM_CONCURRENCY=2time -p vips im_benchmarkn temp.v temp2.v 1real0m6.972suser0m13.732ssys0m0.273sreal0m6.995suser0m13.722ssys0m0.316svips im_avg temp2.v120.151IM_CONCURRENCY=3time -p vips im_benchmarkn temp.v temp2.v 1real0m4.720suser0m13.767ssys0m0.284sreal0m4.685suser0m13.725ssys0m0.331svips im_avg temp2.v120.151IM_CONCURRENCY=4time -p vips im_benchmarkn temp.v temp2.v 1real0m3.534suser0m13.776ssys0m0.267sreal0m3.564suser0m13.862ssys0m0.307svips im_avg temp2.v120.151IM_CONCURRENCY=5time -p vips im_benchmarkn temp.v temp2.v 1real0m2.903suser0m13.886ssys0m0.350sreal0m2.842suser0m13.753ssys0m0.288svips im_avg temp2.v120.151IM_CONCURRENCY=6time -p vips im_benchmarkn temp.v temp2.v 1real0m2.403suser0m13.829ssys0m0.312sreal0m2.391suser0m13.808ssys0m0.262svips im_avg temp2.v120.151IM_CONCURRENCY=7time -p vips im_benchmarkn temp.v temp2.v 1real0m2.090suser0m13.860ssys0m0.322sreal0m2.104suser0m13.878ssys0m0.331svips im_avg temp2.v120.151IM_CONCURRENCY=8time -p vips im_benchmarkn temp.v temp2.v 1real0m1.880suser0m13.867ssys0m0.344sreal0m1.880suser0m13.833ssys0m0.303svips im_avg temp2.v120.151Linux mm-jcupitt2 3.5.0-22-generic #34-Ubuntu SMP Tue Jan 8 21:47:00 UTC 2013 x86_64 x86_64 x86_64 GNU/Linuxgcc (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2vips-7.32.0-Wed Jan 23 12:05:28 GMT 2013building test image ...tile=13test image is 3770 by 5746 pixelsmax cpus = 2starting benchmark .../usr/bin/time -f %e vips --vips-concurrency=xx im_benchmarkn temp.v temp2.v 1reported real-time is best of three runscpus real-time1 11.752 6.14Linux banana 2.6.17-11-386 #2 Thu Feb 1 19:50:13 UTC 2007 i686 GNU/Linuxgcc (GCC) 4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5)vips-7.11.20-Tue Feb 13 13:47:53 GMT 2007building test image ...tile=13test image is 3770 by 5746 pixelsstarting benchmark ...chain=1IM_CONCURRENCY=1time -p vips im_benchmarkn temp.v temp2.v 1real 31.83user 31.41sys 0.41real 31.91user 31.52sys 0.37vips im_avg temp2.v120.134Darwin pineapple.Belkin 9.4.0 Darwin Kernel Version 9.4.0: Mon Jun 9 19:30:53 PDT 2008; root:xnu1228.5.20~1/RELEASE_I386 i386 i686-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5465)vips-7.16.0-Thu Sep 4 11:43:34 BST 2008building test image ...tile=13test image is 3770 by 5746 pixelsstarting benchmark ...chain=1IM_CONCURRENCY=1time -p vips im_benchmarkn temp.v temp2.v 1real 21.35user 20.09sys 1.34real 21.37user 20.09sys 1.35vips im_avg temp2.v120.134IM_CONCURRENCY=2time -p vips im_benchmarkn temp.v temp2.v 1real 11.62user 20.76sys 1.80real 11.67user 20.76sys 1.86vips im_avg temp2.v120.134Linux roundtable 2.6.15-27-amd64-generic #1 SMP PREEMPT Fri Dec 8 17:50:54 UTC 2006 x86_64 GNU/Linuxgcc (GCC) 4.0.3 (Ubuntu 4.0.3-1ubuntu5)vips-7.11.20-Mon Feb 12 18:05:51 GMT 2007building test image ...tile=13test image is 3770 by 5746 pixelsstarting benchmark ...chain=1IM_CONCURRENCY=1time -p vips im_benchmarkn temp.v temp2.v 1real 16.19user 15.48sys 0.59real 15.81user 15.36sys 0.52vips im_avg temp2.v120.134IM_CONCURRENCY=2time -p vips im_benchmarkn temp.v temp2.v 1real 8.19user 15.77sys 0.47real 8.33user 15.95sys 0.49vips im_avg temp2.v120.134IM_CONCURRENCY=3time -p vips im_benchmarkn temp.v temp2.v 1real 6.18user 15.82sys 0.46real 6.04user 15.95sys 0.53vips im_avg temp2.v120.134IM_CONCURRENCY=4time -p vips im_benchmarkn temp.v temp2.v 1real 4.35user 16.11sys 0.55real 4.25user 15.86sys 0.56vips im_avg temp2.v120.1342.6.9-42.0.3.ELsmp gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-3)vips-7.11.12-Fri Oct 6 13:15:22 BST 2006IM_CONCURRENCY=1time vips im_benchmark temp.v temp2.vreal 0m35.270suser 0m34.366ssys 0m0.934sIM_CONCURRENCY=2time vips im_benchmark temp.v temp2.vreal 0m21.914suser 0m41.269ssys 0m1.681sIM_CONCURRENCY=3time vips im_benchmark temp.v temp2.vreal 0m20.598suser 0m57.306ssys 0m2.765sIM_CONCURRENCY=4time vips im_benchmark temp.v temp2.vreal 0m19.781suser 1m11.393ssys 0m4.246sLinux turner 2.6.17-10-generic #2 SMP Tue Dec 5 21:16:35 UTC 2006 x86_64 GNU/Linuxgcc (GCC) 4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5)vips-7.11.18-Mon Dec 18 18:19:27 GMT 2006building test image ...tile=13test image is 3770 by 5746 pixelsstarting benchmark ...chain=1IM_CONCURRENCY=1time -p vips im_benchmarkn temp.v temp2.v 1real 17.60user 16.58sys 0.65real 17.12user 16.63sys 0.59vips im_avg temp2.v120.134IM_CONCURRENCY=2time -p vips im_benchmarkn temp.v temp2.v 1real 9.01user 17.18sys 0.78real 8.99user 17.12sys 0.76vips im_avg temp2.v120.134IM_CONCURRENCY=3time -p vips im_benchmarkn temp.v temp2.v 1real 7.78user 22.02sys 0.83real 7.79user 21.99sys 1.00vips im_avg temp2.v120.134IM_CONCURRENCY=4time -p vips im_benchmarkn temp.v temp2.v 1real 7.03user 25.74sys 1.16real 7.02user 25.60sys 1.25vips im_avg temp2.v120.134MINGW32_NT-5.1 MM-DDAVIES1 1.0.10(0.46/3/2) 2004-03-15 07:17 i686 unknown gcc.exe (GCC) 3.4.2 (mingw-special)vips-7.11.17-Wed Nov 29 12:01:14 GMTST 2006building test image ...tile=13test image is 3770 by 5746 pixelsstarting benchmark ...chain=1IM_CONCURRENCY=1time -p vips im_benchmarkn temp.v temp2.v 1real 36.59user 0.01sys 0.01real 36.68user 0.01sys 0.01vips im_avg temp2.v120.072A quick benchmark (11x11 unsharp mark of a 10kx10k image) shows:
1 Thread 166s2 threads 82s3 threads 55s4 threads 42sie a linear speed-up
Linux degas.ecs.soton.ac.uk 2.6.19-1.2911.fc6 #1 SMP Sat Feb 10 15:51:47 EST 2007 i686 i686 i386 GNU/Linuxgcc (GCC) 4.1.1 20070105 (Red Hat 4.1.1-51)vips-7.11.20-Fri Mar 2 12:47:29 GMT 2007building test image ...tile=13test image is 3770 by 5746 pixelsstarting benchmark ...chain=1IM_CONCURRENCY=1time -p vips im_benchmarkn temp.v temp2.v 1real 15.73user 14.70sys 0.30real 13.96user 13.86sys 0.27vips im_avg temp2.v120.134IM_CONCURRENCY=2time -p vips im_benchmarkn temp.v temp2.v 1real 7.15user 14.02sys 0.23real 7.12user 13.96sys 0.29vips im_avg temp2.v120.134IM_CONCURRENCY=3time -p vips im_benchmarkn temp.v temp2.v 1real 4.77user 13.98sys 0.26real 4.78user 13.97sys 0.25vips im_avg temp2.v120.134IM_CONCURRENCY=4time -p vips im_benchmarkn temp.v temp2.v 1real 4.28user 13.65sys 0.27real 3.69user 14.06sys 0.28vips im_avg temp2.v120.134Linux raphael 2.6.22-10-generic #1 SMP Wed Aug 22 07:42:05 GMT 2007 x86_64 GNU/Linuxgcc (GCC) 4.1.3 20070825 (prerelease) (Ubuntu 4.1.2-15ubuntu3)vips-7.12.4-Fri Aug 31 12:02:06 BST 2007building test image ...tile=13test image is 3770 by 5746 pixelsstarting benchmark ...chain=1IM_CONCURRENCY=1time -p vips im_benchmarkn temp.v temp2.v 1real 15.04user 14.64sys 0.62real 15.22user 14.83sys 0.72vips im_avg temp2.v120.134IM_CONCURRENCY=2time -p vips im_benchmarkn temp.v temp2.v 1real 7.44user 14.29sys 0.61real 7.01user 13.36sys 0.44vips im_avg temp2.v120.134IM_CONCURRENCY=3time -p vips im_benchmarkn temp.v temp2.v 1real 4.58user 13.29sys 0.44real 4.92user 14.22sys 0.44vips im_avg temp2.v120.134IM_CONCURRENCY=4time -p vips im_benchmarkn temp.v temp2.v 1real 3.65user 13.90sys 0.60real 3.93user 14.59sys 0.51vips im_avg temp2.v120.134IM_CONCURRENCY=5time -p vips im_benchmarkn temp.v temp2.v 1real 2.98user 14.25sys 0.40real 2.79user 13.28sys 0.38vips im_avg temp2.v120.134IM_CONCURRENCY=6time -p vips im_benchmarkn temp.v temp2.v 1real 2.45user 13.95sys 0.42real 2.32user 13.07sys 0.46vips im_avg temp2.v120.134IM_CONCURRENCY=7time -p vips im_benchmarkn temp.v temp2.v 1real 12.57user 13.43sys 0.50real 3.06user 17.55sys 0.58vips im_avg temp2.v120.134IM_CONCURRENCY=8time -p vips im_benchmarkn temp.v temp2.v 1real 1.97user 14.00sys 0.44real 2.16user 15.31sys 0.58vips im_avg temp2.v120.134Linux km-bigee 2.6.27-7-eeepc #1 SMP Fri Oct 31 11:36:36 MDT 2008 i686 GNU/LinuxIM_CONCURRENCY=1time -p vips im_benchmarkn temp.v temp2.v 1real 69.22user 67.38sys 1.03real 70.64user 67.76sys 1.04IM_CONCURRENCY=2time -p vips im_benchmarkn temp.v temp2.v 1real 42.09user 76.66sys 1.12real 41.52user 76.45sys 1.10Intel Xeon E5320 x 2 so 8 cores.
vips-7.11.20-Wed Nov 28 11:39:32 GMT 2007building test image ...tile=13test image is 3770 by 5746 pixelsstarting benchmark ...chain=1IM_CONCURRENCY=1time -p vips im_benchmarkn temp.v temp2.v 1real 19.89user 19.43sys 0.33real 20.41user 19.45sys 0.35vips im_avg temp2.v120.134IM_CONCURRENCY=2time -p vips im_benchmarkn temp.v temp2.v 1real 10.01user 19.61sys 0.43real 10.39user 19.58sys 0.41vips im_avg temp2.v120.134IM_CONCURRENCY=3time -p vips im_benchmarkn temp.v temp2.v 1real 6.81user 19.78sys 0.38real 6.78user 19.80sys 0.37vips im_avg temp2.v120.134IM_CONCURRENCY=4time -p vips im_benchmarkn temp.v temp2.v 1real 5.17user 19.87sys 0.41real 6.82user 19.62sys 0.37vips im_avg temp2.v120.134IM_CONCURRENCY=5time -p vips im_benchmarkn temp.v temp2.v 1real 4.31user 19.96sys 0.46real 5.16user 19.79sys 0.39vips im_avg temp2.v120.134IM_CONCURRENCY=6time -p vips im_benchmarkn temp.v temp2.v 1real 3.48user 19.83sys 0.43real 7.03user 19.94sys 0.40vips im_avg temp2.v120.134IM_CONCURRENCY=7time -p vips im_benchmarkn temp.v temp2.v 1real 3.76user 19.98sys 0.44real 3.68user 19.86sys 0.41vips im_avg temp2.v120.134IM_CONCURRENCY=8time -p vips im_benchmarkn temp.v temp2.v 1real 2.84user 20.06sys 0.43real 4.76user 20.07sys 0.48vips im_avg temp2.v120.134IM_CONCURRENCY=9time -p vips im_benchmarkn temp.v temp2.v 1real 4.80user 19.97sys 0.47real 2.79user 20.04sys 0.46vips im_avg temp2.v120.134This is an Apple Macbook 6,1 running Ubuntu 11.04.
./benchmarkn.sh Linux banana 2.6.38-10-generic #46-Ubuntu SMP Tue Jun 28 15:07:17 UTC 2011 x86_64 x86_64 x86_64 GNU/Linuxgcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2vips-7.26.2-Wed Aug 10 10:02:22 BST 2011building test image ...tile=13test image is 3770 by 5746 pixelsmax cpus = 2starting benchmark .../usr/bin/time -f %e vips --vips-concurrency=xx --vips-tile-width=64 --vips-tile-height=64 im_benchmarkn temp.v temp2.v 1reported real-time is best of three runscpus real-time1 10.952 5.81Linux X7DWT-B 2.6.35-22-generic #35-Ubuntu SMP Sat Oct 16 20:45:36 UTC2010 x86_64 GNU/Linuxgcc (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5vips-7.24.5-Sat May 7 14:44:21 UTC 2011building test image ...tile=13test image is 3770 by 5746 pixelsstarting benchmark ...chain=1IM_CONCURRENCY=1time -p vips im_benchmarkn temp.v temp2.v 1real 9.54user 11.84sys 0.30real 9.47user 11.93sys 0.21vips im_avg temp2.v120.151IM_CONCURRENCY=2time -p vips im_benchmarkn temp.v temp2.v 1real 5.21user 11.34sys 0.30real 5.23user 11.37sys 0.40vips im_avg temp2.v120.151IM_CONCURRENCY=3time -p vips im_benchmarkn temp.v temp2.v 1real 3.90user 11.60sys 0.39real 4.04user 11.85sys 0.32vips im_avg temp2.v120.151IM_CONCURRENCY=4time -p vips im_benchmarkn temp.v temp2.v 1real 3.23user 11.59sys 0.32real 3.20user 11.60sys 0.29vips im_avg temp2.v120.151IM_CONCURRENCY=5time -p vips im_benchmarkn temp.v temp2.v 1real 2.69user 11.28sys 0.28real 2.72user 11.26sys 0.30vips im_avg temp2.v120.151IM_CONCURRENCY=6time -p vips im_benchmarkn temp.v temp2.v 1real 2.39user 10.21sys 0.13real 2.48user 10.44sys 0.10vips im_avg temp2.v120.151Darwin katamata.local 12.2.1 Darwin Kernel Version 12.2.1: Thu Oct 18 12:13:47 PDT 2012; root:xnu-2050.20.9~1/RELEASE_X86_64 x86_64i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)Copyright (C) 2007 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.vips-7.32.0-Fri Jan 25 11:03:06 GMT 2013building test image ...tile=13test image is 3770 by 5746 pixelsmax cpus = 4starting benchmark .../usr/bin/time vips --vips-concurrency=xx im_benchmarkn temp.v temp2.v 1cpus = 1 4.52 real 4.33 user 0.22 syscpus = 2 2.49 real 4.57 user 0.33 syscpus = 3 1.83 real 4.88 user 0.41 syscpus = 4 1.47 real 5.00 user 0.47 sysLinux kiwi 4.2.0-18-generic #22-Ubuntu SMP Fri Nov 6 18:25:50 UTC 2015 x86_64 x86_64 x86_64 GNU/Linuxgcc (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010Copyright (C) 2015 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.vips-8.2.0-Thu Nov 12 09:31:37 GMT 2015building test image ...tile=13test image is 3770 by 5746 pixelsmax cpus = 4starting benchmark .../usr/bin/time -f %e vips --vips-concurrency=xx im_benchmarkn temp.v temp2.v 1reported real-time is best of three runscpus real-time1 6.872 3.923 3.724 3.63No optimisation so that it compiles on the platform.
root@linaro-server:~/vips-7.40.2/benchmark# ./benchmarkn.sh Linux linaro-server 3.14.0-1-linaro-arndale-octa #1ubuntu1~ci+140417073620-Ubuntu SMP Thu Apr 17 07:57:24 UTC 201 armv7l armv7l armv7l GNU/Linux gcc (Ubuntu/Linaro 4.8.1-10ubuntu8) 4.8.1 Copyright (C) 2013 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.vips-7.40.2-Mon Jun 30 18:51:43 UTC 2014 building test image ...tile=13test image is 3770 by 5746 pixelsmax cpus = 4starting benchmark .../usr/bin/time -f %e vips --vips-concurrency=xx im_benchmarkn temp.v temp2.v 1 reported real-time is best of three runs cpus real-time1 47.592 31.593 24.444 21.31VIPS 7.11.20 has also been run on a 64-CPU supercomputer (an SGI Origin2000) at Princeton. The results are:
| CPUs | Run time (s) | Speed up |
|---|---|---|
| 1 | 651.85 | 1 |
| 2 | 335.9 | 1.94 |
| 4 | 170.07 | 3.83 |
| 8 | 86.06 | 7.57 |
| 16 | 44.56 | 14.63 |
| 32 | 24.06 | 27.09 |
| 64 | 16.54 | 39.41 |
So about a 40 x speedup for 64 CPUs.
If you graph these numbers you get:

So it's pretty much linear up to about 30 CPUs (with a 27x speedup). The image being processed is 1.3GB so perhaps we are starting to see IO bandwidth limits.
A 2011 dual 6 core server is fairly linear up to 12 threads, then improves more slowly for the next 12 hyperthreaded cores.
