Results from a 2.3hr cook session:
EvaluateGarbageCollectionResults: Skip SoftGC diagnostics if not running a memory diagnostic cook.
112s -> 0.05s
GetNeverCookPackageFileNames: Use FDirectoryTree instead of linear search.
20s -> 1.2s
AssignLayerChunkDelegate: Cache the ChunkLayerAssignment map from ini because the function can be called multiple times.
11.5s -> 0.01s
InitializeFromExistingAndPrune: Use FName WriteToString instead of ToString.
6.8s -> 6.8s (no change)
TJsonStringWriter::Close: Reserve the OutString to make only a single allocation
2.8s -> 2.2s
MakePathRelativeTo: Use TInlineAllocators and FStringView in the ParseIntoArray arrays, use TArrayView.RightChop instead of RemoveAt, presize the output string.
2.7s -> 1.5s
#rb Zousar.Shaker
#rnx
#preflight 63d81355ec3d1af440a6ab81
[CL 23915442 by Matt Peters in ue5-main branch]
* Fixed so all headers that are supposed to be included independently can compile (there are headers that must be included through other headers)
* Added HEADER_UNIT_SKIP to headers that must be included through others
* Added HEADER_UNIT_UNSUPPORTED to headers that are not supported by platform but is part of the include list anyway (files in Clang folder and pthread files).
* Added HEADER_UNIT_UNSUPPORTED to headers that have bad dependencies and include files from modules they don't depend on. (KeyChainUtilities.h and PackageWriter.h)
#preflight 637281309e3bea8079feb733
#rb devin.doucette
[CL 23127795 by henrik karlsson in ue5-main branch]
Things to note regarding this pass:
* No includes are currently being removed from public headers.
* Any private file that has a #if is currently not being updated.
#rb Devin Doucette and Marc Audy
#preflight 62c62086756222ced497ff95
#preflight 62c626d12f2d04691814d331
#preflight 62c630107e606620fdd64e31
#preflight 62c635c6756222ced49a13cf
[CL 20979027 by bryan sefcik in ue5-main branch]
SizeType will be deprecated in a subsequent change.
#rb Zousar.Shaker
#rnx
#preflight 61b8dde95d1b7767a13a5a70
#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18456907 in //UE5/Release-5.0/... via CL 18456915
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v898-18417669)
[CL 18456926 by devin doucette in ue5-release-engine-test branch]
- Added option flags to control skipping empty tokens/lines, trimming tokens/lines, and ignoring delimiter case.
- Added overloads that add to an output object, such as an array.
#rb Zousar.Shaker
#preflight 61afaba0f27f993dc82117eb
#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18400340 in //UE5/Release-5.0/... via CL 18400346
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v896-18170469)
[CL 18400354 by devin doucette in ue5-release-engine-test branch]
Including StringFwd.h in place of forward declarations offers more flexibility to change how these types are declared.
#jira none
#rb Steve.Robb
[RN] minor Core
#ROBOMERGE-SOURCE: CL 12235779 in //UE4/Release-4.25/... via CL 12235792
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v664-12234175)
[CL 12237495 by devin doucette in Main branch]
- Both hex functions work the same as their FString equivalents but without requiring FString as input or output.
- Optimize TCharToNibble to do a check at the end instead of at the start, as the previous implementation causes the character ranges to be tested twice.
- Change HexToBytes from FString to use UE::String::HexToBytes.
- Add FString += FStringView to facilitate conversion to FStringView.
#rb Matt.Peters, Steve.Robb
#ushell-cherrypick of 10711451 by Devin.Doucette
#ushell-cherrypick of 10720873 by Devin.Doucette
#ROBOMERGE-SOURCE: CL 11162861 via CL 11162877 via CL 11162886
#ROBOMERGE-BOT: (v640-11091645)
[CL 11166825 by devin doucette in Main branch]
These implementations are not optimized yet. They exist to allow conversion from FString to FStringView.
#rb Matt.Peters, Steve.Robb
#ushell-cherrypick of 10720867 by Devin.Doucette
#ROBOMERGE-SOURCE: CL 11162860 via CL 11162876 via CL 11162885
#ROBOMERGE-BOT: (v640-11091645)
[CL 11166821 by devin doucette in Main branch]
- UE::String::ParseLines can be used to split a string view on line endings to find the non-empty lines in the view. Intended to replace functions like FString::ParseIntoArrayLines and FFileHelper::LoadFileToStringArray.
- UE::String::ParseTokens[Multiple] can be used to split a string view on one or more single-character or multi-character delimiters. Intended to replace FString::ParseIntoArray. Separate handling of single-character delimiters reduced the cost by 27% in the case being profiled.
- Extend Algo::CompareByPredicate to allow the input ranges to be different types and to take them by universal reference.
- Extend TArrayView and MakeArrayView to allow array views to be created from initializer lists.
#rb Matt.Peters, Steve.Robb
#ushell-cherrypick of 10720885 by Devin.Doucette
#ushell-cherrypick of 10812084 by Devin.Doucette
#ROBOMERGE-SOURCE: CL 11162858 via CL 11162872 via CL 11162884
#ROBOMERGE-BOT: (v640-11091645)
[CL 11166820 by devin doucette in Main branch]