Re: [Gimp-developer] Ways to improve Gimp 2.9 performance



I thought Gentoo was all about optimizing a linux distribution to your specific proecessor. :)

Anyway, try the following optimization and see if it makes a difference in your setup:

./autogen CFLAGS="-O3 -ffast-math -ftree-vectorize" ...




On Sat, Mar 2, 2013 at 8:49 AM, Elle Stone <l elle stone gmail com> wrote:
Being curious about optimization, I set up two identical installations
of babl, gegl, and Gimp, in separate, side-by-side prefixes (same
partition, hard drive):

In  "gimp291" babl, gegl, and Gimp were compiled with ./autogen.sh . . .

In "gimp292" babl, gegl, and Gimp were compiled with
CFLAGS="-march=native -Ofast" CXXFLAGS="${CFLAGS}" ./autogen.sh . . .

I made two copies of the same image (both copies in the same
directory) and ran both Gimps simultaneously, started from a terminal
using GEGL_SWAP=RAM. Then I did the same edits on both images,
switching back and forth:

./gimp291.sh (not optimzed)
Curves: 1.90939 MPixels/sec
Curves: 2.05433 MPixels/sec
Levels: 2.01868 MPixels/sec
Levels: 2.11656 MPixels/sec
Levels: 1.18821 MPixels/sec
(usm)
GEGL Operation: 1.55727 MPixels/sec
GEGL Operation: 1.98604 MPixels/sec
GEGL Operation: 1.46279 MPixels/sec
(blur)
GEGL Operation: 1.5169 MPixels/sec
GEGL Operation: 1.59023 MPixels/sec
GEGL Operation: 1.36274 MPixels/sec

./gimp292.sh (optimized)
Curves: 2.952 MPixels/sec
Curves: 3.41224 MPixels/sec
Levels: 4.92665 MPixels/sec
Levels: 5.54835 MPixels/sec
Levels: 1.937 MPixels/sec
(usm)
GEGL Operation: 1.76634 MPixels/sec
GEGL Operation: 2.21788 MPixels/sec
GEGL Operation: 1.87769 MPixels/sec
(blur)
GEGL Operation: 2.02932 MPixels/sec
GEGL Operation: 2.04801 MPixels/sec
GEGL Operation: 1.80537 MPixels/sec

The identical test images were 1302 × 867 pixels. I monitored the ram
usage on the status bars and both images showed the exact same amount
of ram at each step of the editing process. I also monitored system
ram using "free", and for the whole process there was plenty of free
ram, with no writing to the system swap files. Comparing the numbers,
the optimized babl/gegl/Gimp was always faster (higher MPixels/sec is
better, yes?).

I also did a series of brush strokes using 50% opacity, hardness 50,
1000px paint brush, trying to keep the brush strokes identical for
both versions of Gimp, switching back and forth between the two
versions. Timing was subjective, of course, but the optimized Gimp
brush strokes always completed in less time, sometimes in about half
the time as the non-optimized Gimp.

References:
http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
http://openbenchmarking.org/result/1210138-RA-GCCAMDBUL77
http://www.gentoo.org/doc/en/gcc-optimization.xml
http://www.linuxfromscratch.org/hints/downloads/files/optimization.txt

The openbenchmarking article compares speed of execution of selected
tasks using several open source programs that were compiled with
different optimization levels. Usually but definitely not always
-Ofast was the fastest.

There is no way a Linux distribution can optimize for a particular
processor. So it sounds like it might actually help if the other
programs on which Gimp depends, like Cairo and gtk, were also
optimized. Has anyone tried this? Several sources mentioned programs
that heavily use glibc as a possible exception to using higher levels
of optimization. Would that affect Gimp?

Elle

--
http://ninedegreesbelow.com - articles on open source digital photography
_______________________________________________
gimp-developer-list mailing list
gimp-developer-list gnome org
https://mail.gnome.org/mailman/listinfo/gimp-developer-list



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]