godotengine / godot-cpp

C++ bindings for the Godot script API
MIT License
1.74k stars 575 forks source link

Compile time regression(?) #1610

Open IvanInventor opened 1 month ago

IvanInventor commented 1 month ago

Godot version

-

godot-cpp version

2ffff669f557351e85423e9edbc7a0e6520b613e

System information

Arch Linux

Issue description

Commit introduces ~X3 compilation time.

Steps to reproduce

Bisected from master, benchmarked with

time scons

command

Approximate compile time of good commit

real    5m4.576s
user    44m50.995s
sys 1m48.742s

bad commit

real    15m37.927s
user    145m58.519s
sys 3m25.119s

Minimal reproduction project

godot-cpp repo

dsnopek commented 1 month ago

My machine appears to be much faster than yours, however, I am still able to reproduce this in my testing.

I tried with these commands:

scons -c
time scons

On 730ccaae392c5838b8907b3cedd56b19be6b6d8c (the commit before PR https://github.com/godotengine/godot-cpp/pull/1162):

real    0m35.237s
user    13m15.284s
sys     2m19.489s

On 96565e1de5042baeb4835e56021fc995f1647fd1 (current master):

real    1m55.579s
user    51m56.977s
sys     3m50.841s

My guess is that this is from the changes to type_info.hpp which ends up getting included everywhere. I'm not sure how to improve this...

cc @Repiteo