Large Performance Regression in UE5 (CPU Performance)

I want to quickly summarize a topic that I ignored to a degree. This in respect to how Chaos affects general traces and collision handling.

I set up a simple test scenario where I was looking at the cost of the CMC (for its computation in traces and sweeps) on 4.27 PhysX and 4.27 Chaos, this before comparing against UE5.

Results goes as follow, per CharacterMovementComponent when moving:

PhysX  4.27       0.065ms 
Chaos 4.27        0.09ms 
UE      5.4/5.5     0.10ms

While these numbers may look similar, isn’t really the case as Chaos 4.27 is 29% slower than it’s PhysX counterpart. This talks a lot about the general performance regression we get from the physics, not for simulation, but for general traces, queries, sweeps,etc.

While 5.5/5.4 is at 35% slower than 4.27 PhysX, this small extra overhead should be coming for the Larger Unit values (so there’s is an answer to the LargeWorldUnit performance question). At the same time it doesn’t look like there has been a meaningful performance upgrade on Chaos since back in the UE4 stage for that type of logic.


After all of these findings I find myself more confident in using Unreal 4 for some projects. In fact at a point I was working in a online shooter title on 4.27 with RTXGI(for some reason RTXGI was broken in UE5 and had performance issues).

I think UE4 is a viable and sensible option that is available, and it should be given appropriate consideration when taking a decision as it’s truly different from UE5, not just an outdated version of something newer.

3 Likes

Amazing Legwork!

Just wanted to confirm your findings for a sample of 350 frames with Niagra.
Here are some other suspect items.

You don’t happen to have your solution for PhysicsFieldComponent and Camera tick stuff do you?
trying to track down that camera one.

350 frames of gamplay Total Time Self time Average Time Occurances
UE4.27
FNiagaraWorldManager::Tick :mag: 1.370 ms 1.351 ms 0.001 ms 2185
UE5.3
FNiagaraWorldManager::Tick :mag: 4.146 ms 4.124 ms 0.002 ms 2352
NiagaraPumpBatcher :mag: 0.221 ms 0.216 ms 0.001 ms 350
FUpdateSpeedTreeWindCommand :mag: 0.286 ms 0.286 ms 0.001 ms 350
UMovieSceneEntitySystemLinker::LinkRelevantSystems :mag: 2.102 ms 0.016 ms 0.014 ms 152
FMediaPlayerFacade::TickFetch :mag: 0.442 ms 0.289 ms 0.000 ms 1400
UWorld::UpdateLevelStreaming :mag: 0.233 ms 0.233 ms 0.001 ms 350
FWebBrowserSingleton::Tick :mag: 2.196 ms 0.175 ms 0.006 ms 350

1 Like

Nice findings! The camera is a very simple one, just go to the camera class and deactivate it’s default comp tick (it will still work). Although I don’t quite remember for what the tick was being used for.

Whenever the 5.6 branch is published on github I will make a build and starting toying with those tings (should be in about some days from now)

Only my 5700X3D with RX 6800 can keep up with recent UE5 games like STALKER 2 & Silent Hill 2.

1 Like

Been screaming these findings from the rooftops forever now! Even today I run DX11 SM5 SWRT Lumen instead of DX12 to hit steamdeck with GI in a HLOD workflow vs Nanite. Its a good tradeoff but can’t touch the perf I get from UE4.

2 Likes

I have been following closely pushes to Main. 5.6 has been delayed a bit (I was expecting for the Beta to release at around GDC time as usual). x.com/theredpix → Been posting several pushes related to non-trivial optimizations. Still waiting for the 5.6 branch to be made public on GitHub to compile it and test it myself.


One of them

3 Likes

A function to delete objects on the Niagara Render Thread was just added. With that you can get some further control over Niagara’s Performance

On update on Niagara Tick was recently push to UE5-Main (5.6)

An Optimization to QueueTickFunction was just pushed to 5.6 DEV github.com/EpicGames/UnrealEngine/commit/659412a097ad1ea20ac95e3563fbe45e685ee771

2 Likes

I made a document summarizing Optimization Changesets for 5.6, this document includes pushes from December! It has edit access so anyone can add more data to it. Also, I find this particularly useful for performance regressions, so devs are aware of which changesets to backtrack based on their project needs! Unreal 5.6 Optimization Pushes - Google Docs

4 Likes

I can confirm a large slowdown on the CharacterMovementComponent CPU times on 5.6.

When a character moves left/right the cpu time on 5.4 was at 0.14ms, on 5.6 gets to 0.20ms. which is 43% slower! I tried adjusting the net settings but it didnt improve performance at all.

To improve performance consider replacing the charMov class from one an older engine version

We have some good news regarding 5.7 (which just released on github today).

From the early tests I have done I can pretty much confirm that the base CPU utilization in 5.7 is faster than 5.6. Specially it looks like the CMC got back to pre 5.6 performance levels. Granted this is 5.7 with Clang VS Launcher 5.6 but still the difference is large enough to confirm better performance on 5.7

5.6

5.7

3 Likes

So does 5.7 perf now match the 4.27 finally?

1 Like

not even close to 4.27

1 Like

I tried fast same small scene on UE5.7 (but forward rendering only) on DX11 with baked light and I pull similar or better perf than on UE4.27 which I am currently on. Not sure about deferred rendering, but forward seems good for the first time since UE5. I guess I will be switching, UE5 should be faster and utilize multi threading on bigger scene afaik.

1 Like

with not even close i mean on game thread performance! with heavy reduction and even further gymnastic with engine source (assuming graphic ingenering knowledge) it is possible to get performance on par with ue4.27 but just for rendering, game logic is signif.. slower than ue4.27 considering medium number of controlled actor, for example shooters game etc, for low actor count its bearable and you got numerous advantage in new mechanics in ue5. for high and ultra high actor count i cant say for sure but ue5 have mass and several other improvements over vanilla ue4 so i assume in that case ue5 is way to go for small studios, larger and other who implementing they own optimized and customized solution, with high knowledge about, they probably again can get squeezze more performance on ue4.