- Add GetAttachedActor overload which takes a functor so we can iterate more effectively and abort iteration if needed.
- 5 sec to 90ms per frame (55x improvement) when selected actor contains 60 000 others.
- 43 sec to 2s (21x improvement) for CaptureSceneThumbnail at the end of datasmith import for a 60 000 actors scene.
From dev-enterprise[at]7062261,7063185
#rb Steve.Robb, Marc.Audy, JeanMichel.Dignard
#jira UE-77027
#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: danny.couture
#ROBOMERGE-SOURCE: CL 7259947 in //UE4/Release-4.23/... via CL 7259948
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build) (v371-7306989)
[CL 7334458 by danny couture in Dev-Build branch]
These needed to be pointers as the map may have data added to it while we have a reference to an element within it.
#jira UE-74604
[FYI] Francis.Hurteau
#rb none
#rnx
#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: jamie.dale
#ROBOMERGE-SOURCE: CL 7064703 in //UE4/Release-4.23/... via CL 7064706
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build) (v367-6836689)
[CL 7124419 by jamie dale in Dev-Build branch]
This removes repeated work iterating fields, and can save a considerable amount of time when processing large arrays of structs.
#jira UE-74604
#rb Francis.Hurteau
#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: jamie.dale
#ROBOMERGE-SOURCE: CL 7064412 in //UE4/Release-4.23/... via CL 7064417
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build) (v367-6836689)
[CL 7124389 by jamie dale in Dev-Build branch]
This will help reduce code duplication, public api exposure, and memory usage.
[at]Ryan.Gerleve, [at]Brian.Bekich, [at]LouisPhilippe.Seguin, [at]Matthias.Hornlund, [at]Peter.Engstrom
#rb LouisPhilippe.Seguin, Ryan.Gerleve
#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: jon.nabozny
#ROBOMERGE-SOURCE: CL 6837547 via CL 6837550 via CL 6839935 via CL 6841215
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build) (v366-6836689)
[CL 6876824 by jon nabozny in Dev-Build branch]
New AssetRegistryState::InitializeFromExistingAndPrune temporarily disabled until some bugs have been fixed.
Test Scenario:
1) BuildCookStageAndRun with these arguments: -platform=Win64 -configuration=Development
2) CookIterate with these arguments: -run=Cook -CookCultures=en -TargetPlatform=WindowsClient -unversioned -stdout -unattended -iterate
Wall Time Results (as an average of running step 2) two times):
Before: ~09:40 (580 seconds) cook commandlet time
After: ~02:30 (150 seconds) cook commandlet time
=> 07:10 (430 seconds ) faster, i.e. a ~ 3.9x speedup
Win32 FileSystem Results:
Before: 1.5 million GetFileAttribute calls and 1.2 million FindNextFile calls
After: 35 0000 GetFileAttribute calls and 1.6 million FindNextFile calls
=> ~400 000 calls to FindNextFile replaces ~1.5 million calls to GetFileAttribute
#rb none
(peafour-cherrypick of //UE4/Dev-Core/[at]5645695 by PJ.Kack)
#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: pj.kack
#ROBOMERGE-SOURCE: CL 5533504 via CL 5533655 via CL 5536177 via CL 5772728 via CL 5772753 via CL 5772793
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build)
[CL 5783689 by pj kack in Dev-Build branch]
Integrate all cook -iterate optimizations from //UE4/Dev-core/...
Test Scenario:
1) BuildCookStageAndRun with these arguments: -platform=Win64 -configuration=Development
2) CookIterate with these arguments: -run=Cook -CookCultures=en -TargetPlatform=WindowsClient -unversioned -stdout -unattended -iterate
Wall Time Results (as an average of running step 2) two times):
Before: ~09:40 (580 seconds) cook commandlet time
After: ~02:30 (150 seconds) cook commandlet time
=> 07:10 (430 seconds ) faster, i.e. a ~ 3.9x speedup
Win32 FileSystem Results:
Before: 1.5 million GetFileAttribute calls and 1.2 million FindNextFile calls
After: 35 0000 GetFileAttribute calls and 1.6 million FindNextFile calls
=> ~400 000 calls to FindNextFile replaces ~1.5 million calls to GetFileAttribute
#rb none
#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: pj.kack
#ROBOMERGE-SOURCE: CL 5533504 via CL 5533655 via CL 5536177
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build)
[CL 5544723 by pj kack in Dev-Build branch]