Mamy dużą bazę kodów, która z powodzeniem używała boost :: signals od lat. Niedawno przestawiliśmy się na zwiększenie v1.54 i zdecydowaliśmy, że ponieważ sygnały boost :: były przestarzałe, przełączaliśmy się na boost :: signals2.Skompiluj razy z boostem :: signals2 very slow
Problemem, który widzimy, jest to, że czasy kompilacji są przerażające. Na przykład mały plik .cpp zajmie teraz ponad 20 sekund, w którym był używany 4.
Podobnie, jedna z naszych bibliotek (duża), która trwała około 10 minut do wygenerowania teraz, zajmuje nawet godzinę. Przeszukałem wszędzie dokumentację, jak to poprawić poprzez prekompilowane nagłówki, makra itp., Ale jeszcze nie znalazłem niczego, co znacznie poprawiłoby sytuację.
Przeglądanie cl.exe w procmon pokazuje ogromną ilość IO w bibliotekach boost :: signals2 i mpl.
Nie potrzebujemy zabezpieczenia gwintu, które zapewniają sygnały2, w tym momencie jesteśmy blisko wyciągania wtyczki "aktualizacji" i powrotu do sygnałów. Czy ktokolwiek ma jakieś sugestie lub doświadczenie z tym, zanim się poddamy?
Używamy VS2012 z dużą ilością pamięci RAM/dysku/etc.
Czy używasz prekompilowanych nagłówków? –
Signals2 używa szablonów variadic, są one emulowane w VS2012 po znacznych kosztach. Naprawiono w VS2013. Pomiędzy Boostem dostosowującym się do tego i lądowaniem VS2013 na pulpicie, daj mu garść miesięcy. –
@HansPassant Dzięki za informację, nie brałem tego pod uwagę. Biorąc pod uwagę, że nie możemy czekać, aż VS2013 jest najlepszym sposobem działania, aby powrócić do biblioteki sygnałów według ciebie? Tak jak obecnie, kod nie nadaje się do użytku ze względu na wolne czasy kompilacji. – pennyowe