Date: Sun, 24 May 2026 22:23:29 -0400
On Sun, May 24, 2026 at 5:21 PM Adrian Johnston via Std-Proposals <
std-proposals_at_[hidden]> wrote:
> For this round of tests I downloaded the latest versions of GCC, Clang and
> MSVC. I also compared against the current Ubuntu release of GCC and Clang.
>
> Compiler Version Module Build Module Use Include All
> g++ 16.1.0 3345ms 249ms 1579ms
> g++ 15.2.0 2280ms 172ms 877ms
> clang 22.16.6 2014ms 52ms 1545m
> clang 20.1.8 1491ms 44ms 1142ms
> MSVC 19.38.33145 2058ms 81ms 1295ms
>
> Right now none of the compilers provided submodule support that I saw for
> the standard library. That means these are single threaded numbers as there
> is no opportunity for parallelism. These are C++23 unoptimized builds. The
> module use numbers involve importing the module and then emitting a single
> trivial function that used the module.
>
When you say "module build", what does this mean? Is this what happens when
you change a command line parameter that forces a rebuild of the C++
standard library module? How often does such a rebuild need to happen?
Also, what "submodule support" are you referring to? The C++ standard
doesn't have any submodules; there are just `std` and `std.compat`. And
looking at those module use numbers, they seem pretty reasonable; GCC could
use some improvement, but the rest are at least an order of magnitude
better than includes.
std-proposals_at_[hidden]> wrote:
> For this round of tests I downloaded the latest versions of GCC, Clang and
> MSVC. I also compared against the current Ubuntu release of GCC and Clang.
>
> Compiler Version Module Build Module Use Include All
> g++ 16.1.0 3345ms 249ms 1579ms
> g++ 15.2.0 2280ms 172ms 877ms
> clang 22.16.6 2014ms 52ms 1545m
> clang 20.1.8 1491ms 44ms 1142ms
> MSVC 19.38.33145 2058ms 81ms 1295ms
>
> Right now none of the compilers provided submodule support that I saw for
> the standard library. That means these are single threaded numbers as there
> is no opportunity for parallelism. These are C++23 unoptimized builds. The
> module use numbers involve importing the module and then emitting a single
> trivial function that used the module.
>
When you say "module build", what does this mean? Is this what happens when
you change a command line parameter that forces a rebuild of the C++
standard library module? How often does such a rebuild need to happen?
Also, what "submodule support" are you referring to? The C++ standard
doesn't have any submodules; there are just `std` and `std.compat`. And
looking at those module use numbers, they seem pretty reasonable; GCC could
use some improvement, but the rest are at least an order of magnitude
better than includes.
Received on 2026-05-25 02:23:44
