Report about compilers available for Krita

Dmitry Kazakov dimula73 at gmail.com
Thu Aug 19 08:11:47 BST 2021


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
<limits>` 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kimageshop/attachments/20210819/d35f5bde/attachment.htm>


More information about the kimageshop mailing list