After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 795880 - Slow version of Windows Gimp 2.10 (gimp.org)
Slow version of Windows Gimp 2.10 (gimp.org)
Status: RESOLVED OBSOLETE
Product: GIMP
Classification: Other
Component: Windows Installer
2.10.0
Other Windows
: Normal normal
: 2.10
Assigned To: GIMP Bugs
Jernej Simončič
Depends on:
Blocks:
 
 
Reported: 2018-05-07 12:24 UTC by sylvie.alexandre
Modified: 2018-05-21 07:08 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description sylvie.alexandre 2018-05-07 12:24:21 UTC
Bonjour,

The official versions of Gimp 2.10.0 for Windows seemed slow and I did tests to check the speed.
I tested the latest 64/32 bit version of Gimp.org, the version of Partha and GimpEval in a Windows 10 64-bit environment.
I applied the 'Circular Motion Blur' filter on an image of 7206 * 7206 pixels (dimension that we use for our scrapbooking montages).
The rendering of the filter is obtained after the same time on the versions of Partha and GimpEval is about 3mn 47s.
The same rendering is obtained after 5mn 20s on the version of Gimp.org.
This confirms this problem of slowness.
I do not know if the problem comes from cross-compilation, library versions but big improvements are possible.

Thank you.
:o)

Here are the environments of the 3 versions :

********
Gimp.org

GNU Image Manipulation Program version 2.10.0
git-describe: GIMP_2_10_0
C compiler:
	Using built-in specs.
	COLLECT_GCC=x86_64-w64-mingw32-gcc
	COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/lto-wrapper
	Target: x86_64-w64-mingw32
	Configured with: ../../src/configure --build=x86_64-linux-gnu --prefix=/usr --includedir='/usr/include' --mandir='/usr/share/man' --infodir='/usr/share/info' --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir='/usr/lib/x86_64-linux-gnu' --libexecdir='/usr/lib/x86_64-linux-gnu' --disable-maintainer-mode --disable-dependency-tracking --prefix=/usr --enable-shared --enable-static --disable-multilib --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --libdir=/usr/lib --enable-libstdcxx-time=yes --with-tune=generic --enable-version-specific-runtime-libs --enable-fully-dynamic-string --enable-libgomp --enable-languages=c,c++,fortran,objc,obj-c++ --enable-lto --with-plugin-ld --enable-threads=win32 --program-suffix=-win32 --program-prefix=x86_64-w64-mingw32- --target=x86_64-w64-mingw32 --with-as=/usr/bin/x86_64-w64-mingw32-as --with-ld=/usr/bin/x86_64-w64-mingw32-ld --enable-libatomic
	Thread model: win32
	gcc version 6.3.0 20170415 (GCC) 
	
using GEGL version 0.4.1 (compiled against version 0.4.1)
using GLib version 2.54.2 (compiled against version 2.54.2)
using GdkPixbuf version 2.36.11 (compiled against version 2.36.11)
using GTK+ version 2.24.31 (compiled against version 2.24.31)
using Pango version 1.40.11 (compiled against version 1.40.11)
using Fontconfig version 2.12.6 (compiled against version 2.12.6)
using Cairo version 1.15.10 (compiled against version 1.15.10)



********
Partha

GNU Image Manipulation Program version 2.10.1
git-describe: GIMP_2_9_8-360-g567ff4e
C compiler:
	Using built-in specs.
	COLLECT_GCC=D:Msys-Platformgccingcc.exe
	COLLECT_LTO_WRAPPER=D:/Msys-Platform/gcc/bin/../libexec/gcc/x86_64-w64-mingw32/7.1.0/lto-wrapper.exe
	Target: x86_64-w64-mingw32
	Configured with: ../../../src/gcc-7.1.0/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/mingw710/x86_64-710-posix-seh-rt_v5-rev1/mingw64 --enable-shared --enable-static --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --enable-libstdcxx-filesystem-ts=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/c/mingw710/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/c/mingw710/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/mingw710/prerequisites/x86_64-w64-mingw32-static --with-isl=/c/mingw710/prerequisites/x86_64-w64-mingw32-static --with-pkgversion='x86_64-posix-seh-rev1, Built by MinGW-W64 project' --with-bugurl=https://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -fno-ident -I/c/mingw710/x86_64-710-posix-seh-rt_v5-rev1/mingw64/opt/include -I/c/mingw710/prerequisites/x86_64-zlib-static/include -I/c/mingw710/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -fno-ident -I/c/mingw710/x86_64-710-posix-seh-rt_v5-rev1/mingw64/opt/include -I/c/mingw710/prerequisites/x86_64-zlib-static/include -I/c/mingw710/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS=' -I/c/mingw710/x86_64-710-posix-seh-rt_v5-rev1/mingw64/opt/include -I/c/mingw710/prerequisites/x86_64-zlib-static/include -I/c/mingw710/prerequisites/x86_64-w64-mingw32-static/include' LDFLAGS='-pipe -fno-ident -L/c/mingw710/x86_64-710-posix-seh-rt_v5-rev1/mingw64/opt/lib -L/c/mingw710/prerequisites/x86_64-zlib-static/lib -L/c/mingw710/prerequisites/x86_64-w64-mingw32-static/lib '
	Thread model: posix
	gcc version 7.1.0 (x86_64-posix-seh-rev1, Built by MinGW-W64 project) 
	
using GEGL version 0.4.1 (compiled against version 0.4.1)
using GLib version 2.54.3 (compiled against version 2.54.3)
using GdkPixbuf version 2.36.6 (compiled against version 2.36.6)
using GTK+ version 2.24.32 (compiled against version 2.24.32)
using Pango version 1.40.14 (compiled against version 1.40.14)
using Fontconfig version 2.12.4 (compiled against version 2.12.4)
using Cairo version 1.15.4 (compiled against version 1.15.4)



********
GimpEval

GNU Image Manipulation Program version 2.10.1
git-describe: GIMP_2_10_0-74-g2e643e6270
C compiler:
	Using built-in specs.
	COLLECT_GCC=F:petit-msys2-mingw-32bits-64bits-gimp210-qtmsys64mingw64\x08in\x86_64-w64-mingw32-gcc.exe
	COLLECT_LTO_WRAPPER=F:/petit-msys2-mingw-32bits-64bits-gimp210-qt/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/lto-wrapper.exe
	Target: x86_64-w64-mingw32
	Configured with: ../gcc-7.3.0/configure --prefix=/mingw64 --with-local-prefix=/mingw64/local --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --with-native-system-header-dir=/mingw64/x86_64-w64-mingw32/include --libexecdir=/mingw64/lib --enable-bootstrap --with-arch=x86-64 --with-tune=generic --enable-languages=c,lto,c++,objc,obj-c++,fortran,ada --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-time=yes --enable-libstdcxx-filesystem-ts=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --disable-isl-version-check --enable-lto --enable-libgomp --disable-multilib --enable-checking=release --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-libiconv --with-system-zlib --with-gmp=/mingw64 --with-mpfr=/mingw64 --with-mpc=/mingw64 --with-isl=/mingw64 --with-pkgversion='Rev2, Built by MSYS2 project' --with-bugurl=https://sourceforge.net/projects/msys2 --with-gnu-as --with-gnu-ld
	Thread model: posix
	gcc version 7.3.0 (Rev2, Built by MSYS2 project) 
	
using GEGL version 0.4.1 (compiled against version 0.4.1)
using GLib version 2.56.1 (compiled against version 2.56.1)
using GdkPixbuf version 2.36.12 (compiled against version 2.36.12)
using GTK+ version 2.24.32 (compiled against version 2.24.32)
using Pango version 1.42.1 (compiled against version 1.42.1)
using Fontconfig version 2.13.0 (compiled against version 2.13.0)
using Cairo version 1.15.12 (compiled against version 1.15.12)
Comment 1 Daniel 2018-05-10 09:48:43 UTC
I can confirm that the official build of 2.10.0 is much slower than 2.8.x on Win10/64 machine with 8GB RAM, 2.5Ghz i5 processor, updated graphics drivers. 

Used Windows Installer version, not self-compiled. Most operations, such as applying a Gaussian blur, take at least 3 secs (I do not have exact timing) to redraw on the canvas; you can almost double that amount of time and include other simple operations such as rearranging/adding/deleting layers or even loading/opening the file for 16-bit images. 

These operations run smoother/faster in Partha-build.

Example image properties:
TIFF, 24 mp, 144 MB
6008x4008 pixels
300x300 ppi
RGB color space
16-bit gamma integer
Comment 2 Jehan 2018-05-10 10:56:55 UTC
Anyone knows if Partha applies any patches (last I heard, he was not patching, but who knows)? Or tweak some environment variables in a launch script? And what are his build command lines?

I can't find much details on his website (but I may not have searched at the right place).
Comment 3 sylvie.alexandre 2018-05-10 11:24:29 UTC
Bonjour,

I did other tests with the same 7206 * 7206 pixel image and the 'Circular Motion Blur' filter.
I'm getting significant improvements in speed by using Gimp 2.10.0 32-bit versions of gimp.org and Gimp 2.10.1 32-bit GimpEval:

Gimp 2.10.0 32 bit gimp.org: 1mn 53s
GimpEval 32 bits: 2mn 30s


OpenCL option
By validating the 'OpenCL' option of GimpEval 64 bits the improvement is also very important 36 seconds to obtain the rendering of the filter versus 3mn 47s.
For 32-bit versions the times are the same:
Gimp 2.10.0 32 bit gimp.org: 37s
32-bit GimpEval: 37s

Conclusion:
I am very surprised that 32-bit versions are faster than 64-bit versions.

:o)

@Jehan
I will answer on the Partha version in a few minutes.
Merci.
Comment 4 sylvie.alexandre 2018-05-10 11:34:03 UTC
(In reply to Jehan from comment #2)
> Anyone knows if Partha applies any patches (last I heard, he was not
> patching, but who knows)? 

Bonjour,

The version (portable) of Partha has not changed :
Gimp-2.10.0-std-64bit-portable.exe
md5 : 2e56c14ce7742867c6aaaa4b6f4039d8
110 Mo (116 226 991 octets)

:o)
Comment 5 Jehan 2018-05-10 13:35:16 UTC
Sylvie > I was unclear: I was asking if anyone knows if Partha made changes in the code to warrant a faster build. Or maybe he played with some environment variables changing internal behaviors.

If nobody knows about these, I would appreciate someone asking him. You can also point him to this bug report so that he can comment himself optionally. :-)
Comment 6 sylvie.alexandre 2018-05-10 13:55:23 UTC
Bonjour,

> If nobody knows about these, I would appreciate someone asking him. Y

I'm sorry for the misunderstanding.
I contacted Partha by email.

:o)
Comment 7 Partha 2018-05-10 14:29:37 UTC
Sorry, I was not aware of this bug report and Elle just apprised me of it as well.

No, I have no idea why the official version is slow. As for my builds, my methodology has been the same for a long time.

I use the same compiler to build every single graphic/gtk/glib/etc. dependency from scratch and then build GIMP and its dependencies with the same compiler. The FLAGS I use for all my builds are:

CFLAGS='-O3 -ffast-math -ftree-vectorize'
CXXFLAGS='-std=c++14 -O3 -ffast-math -ftree-vectorize'

with equivalent methodology and flags for my Mac builds. 

When I change compiler (for example when I went from 5.0.3 to 7.1) I rebuild everything from scratch.

Hope that helps.

Please let me know if I'm not being clear or you need further information.

Thanks,
Partha
Comment 8 Jehan 2018-05-10 17:42:25 UTC
Thanks Partha.
Hopefully this will help our Windows package maintainers.
Comment 9 Carlos Soriano 2018-05-21 06:44:23 UTC
Hello,

I need to close this bug report because it's tripping the migration tool Bugzilla API on https://bugzilla.gnome.org/show_bug.cgi?id=795880#c0.

It can be moved manually later on, and since this is the only bug report that caused an issue in GIMP it shouldn't be too hard.

Cheers
Comment 10 Carlos Soriano 2018-05-21 07:08:12 UTC
To clarify more my previous comment, this bug is still valid.

I just need to close it for migrating the GIMP product to GitLab, since the migration tool fails parsing one of the comments.

You can continue discussing here even if closed, and when moved to GitLab you will be able to continue discussing there too.