Be Vewwwy Vewwwy Quiet, We’re Hunting UObjects
May 23, 2018
While hunting down some mysteriously vanishing UObjects we stumbled across a more fundamental problem in the garbage collector.
More
Trash Compactor
April 12, 2018
We recently found a huge leak in the UE4 garbage collector, particularly rearing its head on dedicated servers for large open-world games. Servers for arena type games with short play times (<1 hour) seem to be little affected, and clients don’t see the problem much either. “Huge” is not hyperbole here – we’re talking the garbage collector alone using up to 10 GB of ram in under 24 hours of server operation!
More
Placating The Natives
January 8, 2018
In this article we delve into Blueprint Nativization, a relatively new feature of UE4 that offers significant performance improvements for many projects. Sadly, it often doesn't work out of the box - we've spent some time fixing and improving it for a particular project that we were working on. We have a LOT of changes to present here - some of which have already been implemented into UE4.
More
PhysX: The Case Of The Leaky Cloth
August 28, 2017
We found quite a large leak within Apex 3.4 (currently used in Unreal Engine 4, amongst others) - in a relatively short run of the title that we were working on, we saw over 150mb of leaked memory. Here, we present some changes that will fix this
More
So Long MAX_PATH… And Thanks For All The Fish!
June 30, 2017
Almost every developer that we've spoken to seems to have, at some point, encountered the MAX_PATH limit problem... this post talks about how to PROPERLY fix it
More
The Case of the Locked File
February 27, 2017
We were seeing frequent file IO errors in relation to temporary files created during cooking (particularly when compiling shaders). Our findings for why this were happening were surprising. Here we present a clean way to fix the issues
More
It’s A Size, Jim, But Not As We Know It, Not As We Know It…
February 24, 2017
A really small bug fix is presented here - with a lot of Trekkie banter to fluff the piece out... and why not?
More
Static Code Analysis With PVS-Studio (Part 6)
February 24, 2017
The sixth part in our series looking at coding errors found by using the static code analysis tool PVS-Studio
More
Clear And Reset Danger
February 23, 2017
A common programming mistake is fixed here, this time in the FBX importer
More
Static Code Analysis With PVS-Studio (Part 5)
November 20, 2016
The fifth part in our series looking at coding errors found by using the static code analysis tool PVS-Studio
More
The Sadness of the Ignored Null Pointer
July 14, 2016
In this post we present an optimization coming from removing some pointless null pointer checks. The way that we found this was quite interesting
More
Speeding Up The Time Limit Controls
July 13, 2016
When a process takes a long time to complete, it makes absolute sense to put some time limit checks in so that you're not starving other work. What you don't want to do, of course, is to have those checks slow your original task down further by any considerable amount - here, we found that exactly this was happening .. so we present a solution
More
The Battle of the Lean and the Inlined Bone Functions
July 12, 2016
We took a look at the inlining of a certain part of the codebase and were shocked with what we found... we then went about improving it
More
ToString() Or Not ToString()… Wait, What’s The Question?
July 6, 2016
ToString() is one of the most commonly called functions in UE4 - certainly across the editor, the content cooker and such. Here we take a look at it and make it over twice as fast
More
Tiny Code Fixes – Part 1
July 4, 2016
Here we present several small code fixes and improvements in a nice little package
More
Package Versioning… How It Works… And An Optimization
June 29, 2016
UE4's Package Versioning is a bit of a dark art for most.. here we try to remove some of the confusion around it - while, again, offering some improvements through optimization
More
Portrait Of A Serialize Perf Killer
June 21, 2016
With performance critical editor and cooker code, it's well advised to consider performance when adding tests for rare errors. Here we take a look at this and show by, by considering the CPU pipeline and code cache, a simple change can yield a significant performance improvement without reducing stability
More
Sweeping Up And Disassembling A Physics Macro
June 20, 2016
Macros can often be useful to make certain programming tasks simpler - but they can also cause hidden performance headaches that might otherwise be avoided. Here we look at one of those - and how to improve it
More
Static Code Analysis With PVS-Studio (Part 4)
June 6, 2016
The fourth part in our series looking at coding errors found by using the static code analysis tool PVS-Studio
More
When Are Shopping Lists A Waste of Time?
June 3, 2016
We take a look at some list generating code with UE4 - and why it was completely pointless
More
Using The Disassembler To Highlight Optimization Targets
May 23, 2016
We use the debugger's disassembly view to look at FPaths::IsRelative() after it shows up in our profiling tests. Then we optimize it
More
Static Code Analysis With PVS-Studio (Part 3)
May 16, 2016
The third part in our series looking at coding errors found by using the static code analysis tool PVS-Studio
More
The Cook, The Resave, His Garbage And Her Optimization
May 4, 2016
We present here a way to improve cook times by reducing the frequency of garbage collection
More
The Case Of The ExportHash String Monster
April 29, 2016
We found CreateExportHash() was showing up in profiling the cooker - so we optimized it. Our findings and changes are presented here
More
Static Code Analysis With PVS-Studio (Part 2)
April 27, 2016
The second part in our series looking at coding errors found by using the static code analysis tool PVS-Studio
More
Patch Content Early – NOT At Runtime
April 25, 2016
We present an optimization that removes a significant amount of memory churn from the animation code
More
Static Code Analysis With PVS-Studio (Part 1)
April 19, 2016
The first part in our series looking at coding errors found by using the static code analysis tool PVS-Studio
More
A Huge PhysX Memory Churn Reduction
April 18, 2016
Here we implement a scratch buffer to reduce temporary memory churn passing through PhysX
More
The Smallest, Coolest Optimization
April 17, 2016
While profiling a game's runtime, we found that 40% of memory allocations were coming from a single function. The fix/optimization involves adding a single character
More
The Clue In The Code Comments
April 17, 2016
We present a tiny little fix for a simple - but serious - coding error in the UE4 codebase
More