Let's fix this!
#UE5 #gamedev
https://larstofus.com/2025/09/27/speeding-up-the-unreal-editor-launch-by-not-opening-5500-files/
@LarsThiessen Excellent work! (also, I see @superluminal screenshots, I like :))
I suspect finding and fixing these types of small slowdowns can be a fulltime job at this scale. My last several years at Unity were similar, but it is an uphill battle. Yes you find a ton of small inefficiencies all the time, and they are easily fixable. The problem is, there are several hundred people sometimes adding *new* inefficiencies.
@sschoener @aras @superluminal
True, but more people potentially fixing issues doesn't help if the owner of the code base doesn't have an efficient system to review and merge the incoming pull requests.
Not that I blame them, that's a complex task even many open source communities struggle with :/
@dotstdy it seems like assets/content packs would need to be part of some regression test suite (and therefore checked into that suite's repository)?
(here it definitely helps to have a VCS that supports checking out only a strict subset of a large mono-repo.)
@dotstdy to track performance tests using asset sets that reflect real-world use cases would of course require A Big Goddamn Mono-Repo, but then, it's not as if Epic doesn't have the resources for this. They ought to be able to have constant inputs and reproducible outputs (including a reproducible duration as one of the outputs for each test in the suite).
And it would help their users to make things faster (which seems like it would help their business?)
@LarsThiessen Good stuff!
Here are two other crazy performance catastrophes related to assets :
- if you pass a list of map names when cooking, it'll take a ridiculous amount of time to resolve them to map assets. Use fully qualified names instead.
- The blueprint editor, when it opens for the first time, will scan the asset database for blueprint libraries to populate the functions list UI, and *load them*. This can be very slow if your blueprints libraries have hardref to assets...
@LarsThiessen Nice! FWIW I believe FindFirstFile needs to open the *directory* that is being scanned - not each file. There’s no syscall per file. It’s not super clear from the article if UE misuses the APIs or if it scans 5500 folders (which could be way more files naturally).
And also while folder scanning is actually quite efficient in Windows, you can have file system filters installed that slow down the process substantially. Notably, pretty much any antivirus software will be a problem.
@LarsThiessen Good work! I applied the changes on my 5.6 and it's a bump of speed.
2 additional methods:
- Turn UE always enabled plugins (Apple, Linux, VR) to disable. I have a tool for this at https://github.com/DarknessFX/UEPlugins_DisableDefault .
- Change Engine/Config/BaseEngine.ini to default to DX12 SM6 (default is SM5), save "shaders compiling" time when creating new uproject.
[/Script/WindowsTargetPlatform.WindowsTargetSettings]
DefaultGraphicsRHI=DefaultGraphicsRHI_DX12
+D3D12TargetedShaderFormats=PCD3D_SM6