IncrediBuild: How to speed up the build and analysis of your project

"How much more will you collect?" - a phrase that every developer said at least once in the middle of the night. Yes, the assembly can be long and there is no getting away from it. You can't just take and parallelize the whole thing not on some miserable 8 - 12 cores, but so that 100+. Or is it possible?





I need more cores!

, , . , - , . , , , – , build .





, . , . , , ...





" " - . , . , , . , :)





!

- , . , , , . , - .





, - . , : . , ...





?

, , , . Chromium Linux, - , - ... ( ?). , .





, - , "" Unreal Engine. ! , UE Open Source.





, : Unreal Tournament. , - **.





100+ !

, , IncrediBuild. , - IncrediBuild 20 . , , , distcc, , Windows.





, . :





  • Slack;





  • .





, , Slack... - 12 20. , , . 145 (+/- 10) :)





( ), . , .





, , Visual Studio. ... :)





, , ShaderCompileWorker UnrealLightmass. , . :





, ?





, 30 6! . , , . , .





?

IncrediBuild , . , , , PVS-Studio. .





, : . , ; , ... – :(





, - 145 :





:





**





, :





, ... , . , ... , .





PVS-Studio #2

- Unreal Engine, :





, , -StaticAnalyzer . , . , .





- . .   , .





:





CLMonitor.exe monitor
      
      



. IncrediBuild, .





:





Total build time: 1710,84 seconds (Local executor: 1526,25 seconds)
      
      



, :





CLMonitor.exe saveDump -d dump.gz
      
      



, . , , , – .





:





CLMonitor.exe analyzeFromDump -l UE.plog -d dump.gz
      
      



, IncrediBuild. analyze.bat. profile.xml:





<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Profile FormatVersion="1">
  <Tools>
    <Tool Filename="CLMonitor" AllowIntercept="true" />
    <Tool Filename="cl" AllowRemote="true" />
    <Tool Filename="PVS-Studio" AllowRemote="true" />
  </Tools>
</Profile>
      
      



**





145- :





ibconsole /command=analyze.bat /profile=profile.xml
      
      



Build Monitor:





Something a lot of errors on this graph, right?
- , ?

. , - - . Unreal Tournament .





PVS-Studio #3

, , . , :





....\Build.h(42): fatal error C1189: #error: Exactly one of [UE_BUILD_DEBUG \
UE_BUILD_DEVELOPMENT UE_BUILD_TEST UE_BUILD_SHIPPING] should be defined to be 1
      
      



? – , 1:





  • UE_BUILD_DEBUG;





  • UE_BUILD_DEVELOPMENT;





  • UE_BUILD_TEST;





  • UE_BUILD_SHIPPING.





, , - . , . - . , precompile header, . :





#ifdef PVS_STUDIO

#define _DEBUG
#define UE_BUILD_DEVELOPMENT 1

#define WITH_EDITOR 1
#define WITH_ENGINE 1
#define WITH_UNREAL_DEVELOPER_TOOLS 1
#define WITH_PLUGIN_SUPPORT 1

#define UE_BUILD_MINIMAL 1

#define IS_MONOLITHIC 1
#define IS_PROGRAM 1

#define PLATFORM_WINDOWS 1

#endif
      
      



build.h





. , PVS_STUDIO.





, :





, 15 – . , 2 . 15 . ...





?

, N N . , ( ), , , .





, , . , . , :





I ran it five times and calculated the average of the launches (you saw these numbers in the graphs) :)
( ) :)



All Articles