Download

On C++ Compile Times and Intellisense Speed

I’m traditionally a C# programmer, with a background in Unity. Intellisense(in monodevelop or VS2010-13) is seamless for C#.

As many people have pointed out, compile times and intellisense are sloooooooooooooooooow when working in UE4. This is probably my single greatest complaint with my recent switch to UE4 from Unity. While Hot-reload definitely helps and is a huge step forward from the UDK days, it’s not quite enough.

So, my question is: are these speed issues inherent to C++, C++ in VS or is it specific to the UE4 C++ API?

Though it may sound like a first world problem to some veteran C++ programmers, it really is hard to overstate how huge the speed factor in a modern workflow. I don’t see how having to wait several seconds for intellisense to update between saves is acceptable to anyone.

What do you guys think?

Seems to be an issue with intellisense and UE4. Perhaps because the code base is so large. I actually started using some software called Visual Assist (https://www.wholetomato.com/) based on another recommendation here. It’s not free however, so I’m not sure if I’ll shell out the money when my trial has ended or not but I’ve turned off the VS intellisense and am enjoying a much quicker speed with VA.

As far as compiling times are concerned, I’m not finding them to be too bad after the initial compile. Usually 5 seconds or less.

Yeah you need to disable Intellisense in Visual Studio and go with Visual Assist if you want to stay sane. See here too: https://forums.unrealengine.com/showthread.php?129-VS-2013-Intellisense-Lagging-And-Workflow-Question

Since VA is not supported by VS Express are there any alternatives for Express user?

Afraid not, VA is pretty much the only thing for C++ as far as I know. There is Resharper which is a similiar tool but does not currently support C++. They are working on it though. No idea if that works with Express.

Did you follow the steps to modify your build.cs to speed up compiles for small projects? Usually it only takes 20-30 secs for my C++ game DLL after everything is cached on my non-SSD.

Did we need another Intellisense complaint thread though? There are like 2-3 other ones that have good tips

mostly I use Blueprints though. So I rarely have to compile I suppose

I think part of the compile-time issue is just the structure of the codebase. While it doesn’t seem to be recompiling things that haven’t changed (thankfully) it does use a ton of compile-time trickery. Still, even adding classes and other mucking around only results in 20~30 second compile times on my rather modest machine.

I’d also like to point out that “compile” time for Unity is not measuring compilation of the engine - just scripts. Unless you’re actually a source license holder - and even then we’d still be discussing C++ compile times and not C#.

I know this can get highly ‘opinionated’. But I have also spent a little time in Unity. In their docs, they term their use of C# as ‘scripting’. The UE4 equivalent is Blueprints. Those of us coming from Unity should probably embrace Blueprints first and gradually work our way into C++ as/if needed (just my opinion). I just don’t see the appeal of diving right into C++ if you can code your gameplay in Blueprints quickly. They are a wonderful thing guys. Exploit them!! Optimize later if you must- moving your blues into C++ only as needed and only if your app is CPU bound. By that point you’ll have all your gameplay refined and will have taken 100% advantage of rapid prototyping.

@VegasRich Indeed, it’s important to remember that, but UE4 does have just about everything broken up into individual modules, so it’s not like all engine parts are being re-compiled every time.

@sandboxgod On your first response, I did make the changes suggested by others, but have not noticed much of a difference. On your second point, there are of course pros and cons to each approach. Most of the allure behind BPs is speed, because I don’t have to fuss around with the compile times and restarting the editor, etc, but I’ll disagree that there C# -> BP is a proper equivalency. While we are working with C++ in UE4, it does actually provide a “scripting” layer added on top, that just happens to be C++. I’d argue BP has no equivalent in Unity, and that even asset store solutions fall woefully short of BPs.

Thankfully, Epic have confirmed that this is an issue they are actively addressing, and compile times **should ** improve with future versions. As for intellisense… who knows.