All Projects → Phyronnaz → Uecompiletimesvisualizer

Phyronnaz / Uecompiletimesvisualizer

Licence: mit
Debug compile times in Unreal Engine & MSVC projects

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Uecompiletimesvisualizer

Actionrpggame
Unreal Engine 4 Action RPG type game starter kit.
Stars: ✭ 773 (+696.91%)
Mutual labels:  unreal-engine
Holodeck Engine
High Fidelity Simulator for Reinforcement Learning and Robotics Research.
Stars: ✭ 48 (-50.52%)
Mutual labels:  unreal-engine
Simulator
A ROS/ROS2 Multi-robot Simulator for Autonomous Vehicles
Stars: ✭ 1,260 (+1198.97%)
Mutual labels:  unreal-engine
Runtimemeshcomponent
Unreal Engine 4 plugin component for rendering runtime generated content.
Stars: ✭ 903 (+830.93%)
Mutual labels:  unreal-engine
Opencl.uplugin
OpenCL Plugin for Unreal Engine 4
Stars: ✭ 34 (-64.95%)
Mutual labels:  unreal-engine
Actionroguelike
Third-person Action Roguelike made in Unreal Engine C++ (for Stanford CS193U 2020)
Stars: ✭ 1,121 (+1055.67%)
Mutual labels:  unreal-engine
Tensorflow Ue4
TensorFlow plugin for Unreal Engine 4
Stars: ✭ 753 (+676.29%)
Mutual labels:  unreal-engine
Nimue4
Nim language integration for Unreal Engine 4
Stars: ✭ 90 (-7.22%)
Mutual labels:  unreal-engine
Fworldgenerator
Procedural world generator (plugin) for Unreal Engine 4
Stars: ✭ 45 (-53.61%)
Mutual labels:  unreal-engine
Objectdeliverer
ObjectDeliverer is a data transmission / reception library for Unreal Engine (C ++, Blueprint).
Stars: ✭ 78 (-19.59%)
Mutual labels:  unreal-engine
Voxelplugin
Voxel Plugin for Unreal Engine
Stars: ✭ 844 (+770.1%)
Mutual labels:  unreal-engine
Unrealnetworkprofiler
A modern WPF based Network Profiler for Unreal Engine.
Stars: ✭ 29 (-70.1%)
Mutual labels:  unreal-engine
Hydra Ue4
Hydra Plugin for Unreal Engine 4
Stars: ✭ 69 (-28.87%)
Mutual labels:  unreal-engine
Opengraphic
Graphic Engine & Game Engine lists
Stars: ✭ 772 (+695.88%)
Mutual labels:  unreal-engine
Buoyancysystem
A system for buoyancy and boat physics in Unreal Engine 4.
Stars: ✭ 87 (-10.31%)
Mutual labels:  unreal-engine
Blui
Rich HTML UI engine for UE4
Stars: ✭ 753 (+676.29%)
Mutual labels:  unreal-engine
Ueviewer
Viewer and exporter for Unreal Engine 1-4 assets (UE Viewer).
Stars: ✭ 1,083 (+1016.49%)
Mutual labels:  unreal-engine
Psrealvehicle
Plugin for Unreal Engine 4 with simple force-driven vehicle simulation
Stars: ✭ 92 (-5.15%)
Mutual labels:  unreal-engine
Realtime Server Ue4 Demo
A UE4 State Synchronization demo for realtime-server. 为realtime-server而写的一个UE4状态同步demo.
Stars: ✭ 88 (-9.28%)
Mutual labels:  unreal-engine
Sluaunreal
lua dev plugin for unreal engine 4
Stars: ✭ 1,195 (+1131.96%)
Mutual labels:  unreal-engine

Unreal Engine & MSVC Compile Times Visualizer

Note: as this is using a disk visualizer as output, the following convention is used:

1MB = 1s | 1B = 1 micro second

What is this

It's a frontend for the msvc timing output log. With it you'll be able to see which function takes time to compile, which headers are included by your files and how expensive they are...

Basically if you want to speed up your compilation in UE or in a project using MSVC this should help a lot :)

Links

MSVC dev team blog post about compiler speed

Aras P. blog post about compile times

How to add PCHs in UE

UE Forum thread

Usage

Unreal Engine

  • Copy BuildConfiguration.xml to %appdata%\Unreal Engine\UnrealBuildTool\BuildConfiguration.xml, or if your already have one:
    • add <bPrintToolChainTimingInfo>true</bPrintToolChainTimingInfo> to the BuildConfiguration category
    • add <CompilerVersion>Latest</CompilerVersion> to the WindowsPlatform category (or a toolchain >= to 14.14.26316)
    • disabling Unity build is recommended: add <bUseUnityBuild>false</bUseUnityBuild> to the BuildConfiguration category
  • Build your solution (the output should be spammed with log)
  • VS might crash because of that. If it happens, you can edit UBT to fix it (works even without a source build!):
    • Open Engine\Source\Programs\UnrealBuildTool\UnrealBuildTool.csproj
    • Open System\ParallelExecutor.cs
    • Find the following line: Log.TraceInformation("{0}", CompletedAction.LogLines[LineIdx]); (should be around line 198) and replace it by
var Line = CompletedAction.LogLines[LineIdx];
if (Line.Contains(" error") || Line.Contains(" warning") || Line.Contains(" note"))
{
    Log.TraceInformation("{0}", Line);
}
else
{
    Log.TraceLog("{0}", Line);
}
    • Rebuild the solution (will only rebuild UBT in a launcher build)
    • Note: some errors/warnings might not be shown with this hack. You should change it back once you're done testing
  • Once the build is finished, copy Engine\Programs\UnrealBuildTool\Log.txt next to main.py
  • Run main.py with python
  • It'll create 3 csv: result_includes.csv, result_functions.csv, result_classes.csv. You can open those in wiztree
  • 1MB = 1s

MSVC

  • Add the following arguments to the C/C++ Command Line option in your project settings: /Bt+ /d2cgsummary /d1reportTime
  • Add the following argument to the Linker Command Line option in your project settings: /time+
  • Rebuild your solution. The output should be spammed with log
  • Find your build log file. For me it was under MyProject/MyProject/Debug/MyProject.log
  • Copy it next to the main.py and rename it to Log.txt
  • Run main.py with python
  • It'll create 3 csv: result_includes.csv, result_functions.csv, result_classes.csv. You can open those in wiztree
  • 1MB = 1s

Script args

First arg: log file, defaults to Log.txt

Second arg: destination, defaults to result

Outputs

Most included files

The script will print the headers and the number of times they were included. This can be used to decide which headers should go in a PCH.

Includes

See which headers are included by your files, and how long they took to include.

Classes

See which classes are compiled in your files, and how long it took.

Functions

See which functions are compiled in your files, and how long it took.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].