ReSharper C++ 2019.1 EAP Meets Unreal Engine 4

ReSharper has just started an Early Access Program for v2019.1 and there are plenty of great things we plan to add or improve. The ReSharper C++ team has started this year putting the pedal to the metal on performance optimizations in Unreal Engine 4 codebases. The changes include faster cold startup times, better memory utilization, and new settings to tweak ReSharper’s indexing behavior.

GET RESHARPER C++ 2019.1 EAP

Faster startup times

Depending on the CPU in your workstation, you may expect cold startup to become 5.5 to 6 times faster. This is the time between opening the solution and getting access to the full functionality of ReSharper C++.

A number of things have contributed to these speedups:

  • Algorithmic improvements in code indexing.
  • Skipping plugins and third-party code when indexing an Unreal Engine 4 project by default.
  • Faster cache serialization.

The options that affect code indexing in Unreal Engine 4 solutions are grouped under a new options page at ReSharper | Options | Code Editing | C++ | Unreal Engine.
unreal_engine_options

Clear the Index third party code and Index plugins checkboxes if you want to skip source files under “Plugins” and “ThirdParty” folders from indexing, or Index Unreal Engine source files to skip the indexing of the engine code altogether.

Note that ReSharper C++ indexes engine code in the background by default. This was already implemented in 2018.3, so here’s just a friendly reminder that you can start working with your game logic code long before the engine code is fully processed. If you turn off background indexing using the Enable background indexing checkbox, this will result in a faster but more intrusive initial indexing.

Let’s make a test!

The following performance test proves the numbers we’ve mentioned above. Using Unreal Engine v4.20.3 and the “Shooter Game” project from the Epic Games Library, we measured the cold startup time for parsing game code and Unreal Engine code, respectively:

intel_cold_start

  1. Intel i7-8700k: ReSharper C++ cold start time
    • 2018.3:
      • Game code: 30 sec
      • Unreal Engine code: 23 min 00 sec
      • Total time: 23 min 30 sec
    • 2019.1:
      • Game code: 30 sec (no change)
      • Unreal Engine code: 3 min 39 sec (6.3 times faster than before)
      • Total time: 4 min 12 sec (5.59 times faster)

amd_rider_cold_start

  1. AMD Threadripper 1950x: ReSharper C++ cold start time
    • 2018.3:
      • Game code: 1 min
      • Unreal Engine code: 29 min 30 sec
      • Total time: 30 min 30 sec
    • 2019.1:
      • Game code: 50 sec
        (1.2 times faster than before)
      • Unreal Engine code: 4 min 16 sec (6.76 times faster)
      • Total time: 5 min 6 sec (6.08 times faster)

The numbers speak for themselves! Feel free to get the EAP build and take your own measurements on your own Unreal Engine project.

Smaller memory footprint

Besides faster initial indexing, our team has implemented many memory usage optimizations. Both the memory traffic during initial indexing and the memory footprint afterwards have been improved in order to make the IDE more responsive.

GET RESHARPER C++ 2019.1 EAP

Check out the latest ReSharper C++ 2019.1 EAP build and let us know if the IDE performance has improved for you in Unreal Engine 4 projects! As always, your feedback will be greatly appreciated. And there are more goodies coming in this area, so don’t change the channel!

Join us at Game Developers Conference 2019 later in March and chat about Unreal Engine 4 support in our tools!
GD_Facebook_banner

Cheers,
Your ReSharper C++ Team

This entry was posted in ReSharper C++ Tips & Tricks and tagged , , , . Bookmark the permalink.

11 Responses to ReSharper C++ 2019.1 EAP Meets Unreal Engine 4

  1. James Trudel says:

    Any plans to give this kind of customization to any large project? I currently have to disable reshape when I open some of the larger code bases I work in.

  2. Aissa Ben Zayed says:

    This seems very promising, and I can’t wait to test it out. I have one question though, are there any plans to add support for Unreal Engine macros, like meta data tags ( UPROPERTY for example)

    • Anastasia Kazakova says:

      What kind of support do you expect? In 2018.3 we’ve already added some special treatment for UE4 reflection macros, so now you don’t need wait for Unreal header build tool to work with such macros in ReSharper C++, it will resolve them correctly.

  3. Anton Lind says:

    Will CLion benefit from these improvements?

    • Anastasia Kazakova says:

      These are two different products based on two different architectures. So CLion can’t reuse these optimizations. Also, in CLion UE4 is used with CMake project generated by Unreal Editor, which is also different from sln files you open in VS with ReSharper C++.

Leave a Reply to Anastasia Kazakova Cancel reply

Your email address will not be published. Required fields are marked *