--0000000000005339b405c9fae593 Content-Type: text/plain; charset="UTF-8" Just a small update: On Windows we can also use Clang from MSYS. And it gives 30-40% better performance in the benchmarks. See the attached spreadsheet for the details. On Thu, Aug 19, 2021 at 10:11 AM Dmitry Kazakov wrote: > Hi, all! > > I spent last week testing different compilers on Linux and Windows. I > decided to gather all the information I found in a nice report so we could > reuse it later :) > > Report about compilers available for Krita > ========================================== > > Linux > ----- > > 1) Ubuntu 16.04 > > * uses GCC 5.5.0 by default > * has GCC 9.4.0 available via `ppa:ubuntu-toolchain-r/test` repository > > - GCC 9.4.0 gives 10-30% better performance on Linux (I have tested > on both, Intel and Ryzen7) > - I have already switched our AppImage builds to use GCC 9.4.0 > > 2) Ubuntu 20.04 > > * uses GCC 9.3.0 by default > * has GCC 11.1.0 available via `ppa:ubuntu-toolchain-r/test` repository > > - GCC 11.1.0 gives almost the same performance as 9.4.0 (about 2% > better though) > - GCC 11.1.0 needs our deps patched a bit, because of changes in > include header dependencies. In practice, you just need to add `#include > ` here and there. > - The patches that fix deps compilation on GCC 11.1.0 have already > been pushed to master > > Windows > ------- > > 1) MinGW64-builds (the ones we use atm) > > * uses GCC 7.3.0 > * works somewhat fine > > 2) TDM-GCC (https://jmeubank.github.io/tdm-gcc/) > > * uses GCC 10.3.0 > * compiles Krita and its deps fine > * (!) causes speed regressions in the brush benchmarks > * (!) the compiler itself is 32-bit, so it might be not very efficient > on 64-bit devices > > 3) MSYS (msys2.org) > > * uses GCC 10.3.0 > * the compiler is 64-bit, which is good > * when installing MSYS-MINGW64 one must skip installing GDB, because it > requires Python, which conflicts with Krita's python > * (!) has three libraries dynamically linked to GCC, which conflict > with Krita's deps: > > - expat > - iconv > - zlib > > Compiling of these deps should be manually patched out from Krita's > deps (they are listed as deps to other deps) > > * (!) drmingw fails to build (though I guess it is solvable) > * (!) compilation script of SIP and PyQt should be patched to use > `--install-base` instead of `--prefix`. I don't know why. > * (!) still causes the same regressions in the brush benchmarks > * (!) when packaging, Krita package fails to run on another system > because of the absent zlib, libintl and expat. Perhaps they should be added > to teh package manually. I didn't try it though. > > Raw data of the benchmarks can be found here: > > > https://docs.google.com/spreadsheets/d/1mvTC3Ny73_0F35MscUZBHyYCXRfoX06so5zI5LL2DqU > > -- > Dmitry Kazakov > -- Dmitry Kazakov --0000000000005339b405c9fae593 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Just a small update:

On Windows we can = also use Clang from MSYS. And it gives 30-40% better performance in the ben= chmarks. See the attached spreadsheet for the details.

On Thu, Aug 19,= 2021 at 10:11 AM Dmitry Kazakov <= dimula73@gmail.com> wrote:
Hi, all!

I spent last= week testing different compilers on Linux and Windows. I decided to gather= all the=C2=A0information I found in a nice report so we could reuse it lat= er :)

Report about compilers available for Krita=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Linux
----= -

1) Ubuntu 16.04
=C2=A0 =C2=A0
=C2=A0 =C2=A0* uses GCC 5.5.0 = by default
=C2=A0 =C2=A0* has GCC 9.4.0 available via `ppa:ubuntu-toolch= ain-r/test` repository

=C2=A0 =C2=A0 =C2=A0- GCC 9.4.0 gives 10-30% = better performance on Linux (I have tested on both, Intel and Ryzen7)
= =C2=A0 =C2=A0 =C2=A0- I have already switched our AppImage builds to use GC= C 9.4.0

2) Ubuntu 20.04
=C2=A0 =C2=A0
=C2=A0 =C2=A0* uses GCC = 9.3.0 by default
=C2=A0 =C2=A0* has GCC 11.1.0 available via `ppa:ubuntu= -toolchain-r/test` repository
=C2=A0 =C2=A0
=C2=A0 =C2=A0 =C2=A0- GC= C 11.1.0 gives almost the same performance as 9.4.0 (about 2% better though= )
=C2=A0 =C2=A0 =C2=A0- GCC 11.1.0 needs our deps patched a bit, because= of changes in include header dependencies. In practice, you just need to a= dd `#include <limits>` here and there.
=C2=A0 =C2=A0 =C2=A0- The p= atches that fix deps compilation on GCC 11.1.0 have already been pushed to = master

Windows
-------

1) MinGW64-builds (the ones we us= e atm)
=C2=A0 =C2=A0
=C2=A0 =C2=A0* uses GCC 7.3.0
=C2=A0 =C2=A0* = works somewhat fine
=C2=A0 =C2=A0
2) TDM-GCC (https://jmeubank.github.io/tdm-g= cc/)

=C2=A0 =C2=A0* uses GCC 10.3.0
=C2=A0 =C2=A0* compiles K= rita and its deps fine
=C2=A0 =C2=A0* (!) causes speed regressions in t= he brush benchmarks
=C2=A0 =C2=A0* (!) the compiler itself is 32-bit, so= it might be not very efficient on 64-bit devices
=C2=A0 =C2=A0
3) MS= YS (msys2.org)
=C2=A0=
=C2=A0 =C2=A0* uses GCC 10.3.0
=C2=A0 =C2=A0* the compiler is 64-bi= t, which is good
=C2=A0 =C2=A0* when installing MSYS-MINGW64 one must sk= ip installing GDB, because it requires Python, which conflicts with Krita&#= 39;s python
=C2=A0 =C2=A0* (!) has three libraries dynamically linked to= GCC, which conflict with Krita's deps:
=C2=A0 =C2=A0 =C2=A0
=C2= =A0 =C2=A0 =C2=A0 - expat
=C2=A0 =C2=A0 =C2=A0 - iconv
=C2=A0 =C2=A0 = =C2=A0 - zlib

=C2=A0 =C2=A0 =C2=A0 Compiling of these deps should = be manually patched out from Krita's deps (they are listed as deps to o= ther deps)

=C2=A0 =C2=A0* (!) drmingw fails to build (though I gue= ss it is solvable)
=C2=A0 =C2=A0* (!) compilation script of SIP and PyQt= should be patched to use `--install-base` instead of `--prefix`. I don'= ;t know why.
=C2=A0 =C2=A0* (!) still causes the same regressions in the= brush benchmarks
=C2=A0 =C2=A0* (!) when packaging, Krita package fails= to run on another system because of the absent zlib, libintl and expat. Pe= rhaps they should be added to teh package manually. I didn't try it tho= ugh.

Raw data of the benchmarks can be found here:


--
Dmitry Kazakov
=


--
Dmitry Kazakov
--0000000000005339b405c9fae593--