[Interest] Tricks to improve moc performance?

Dmitriy Purgin dpurgin at gmail.com
Fri Dec 6 10:48:08 CET 2019


Hi Giuseppe,

> This trick is used in several places in Qt itself (look for "includemoc"
> in commits). Not only it helps build times but also it produces slightly
> better code overall.

Could you please elaborate what exactly do you mean under 'better code'?
How does including the xxx_moc.cpp affect the code generation by moc? If
moc decides to generate a better code when included explicitly in a cpp
file, why can't it generate the same better code otherwise? Is there a
technical reason for it?

Thanks!

Cheers
Dmitriy


On Fri, Dec 6, 2019 at 9:49 AM Giuseppe D'Angelo via Interest <
interest at qt-project.org> wrote:

> Il 06/12/19 09:42, Uwe Rathmann ha scritto:
> > Something you can try is to include the moc file at the end of your cpp
> > file. This can be done like this:
> >
> > #include "moc_XYZ.cpp"
> >
> > This type of construction is at least supported by qmake.
> >
> > This does not reduce the number of moc runs, but it reduces the number
> > of compiler runs. As a rule of thumb for not too large classes I would
> > expect, that ~50% of the compile time is spent inside the Qt headers and
> > by including the moc file the overall compile time goes down by 33% as
> > the headers need to be processed only once.
>
> This trick is used in several places in Qt itself (look for "includemoc"
> in commits). Not only it helps build times but also it produces slightly
> better code overall.
>
> HTH,
> --
> Giuseppe D'Angelo | giuseppe.dangelo at kdab.com | Senior Software Engineer
> KDAB (France) S.A.S., a KDAB Group company
> Tel. France +33 (0)4 90 84 08 53, http://www.kdab.com
> KDAB - The Qt, C++ and OpenGL Experts
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> https://lists.qt-project.org/listinfo/interest
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20191206/63bacfe0/attachment.html>


More information about the Interest mailing list