Closed csciguy8 closed 11 months ago
Thanks for the pull request @csciguy8!
Reviewers, don't forget to make sure that:
Some more technical points about why this change is needed...
FLegacyHttpThread::Run
a loop runs in which every iteration eventually calls curl_multi_perform
::Sleep
, or if set to 0, ::SwitchToThread
Overall, this PR accomplishes increased download speed, but the solution is not optimal.
Ideally FLegacyHttpThread::Run()
needs to be written to use curl_multi_poll
instead of Sleep
. This would allow sleeping as needed, based on the amount of activity detected, rather than polling at a fixed 1000hz.
Unfortunately, this is inside Unreal Engine's source and is not configurable from an INI file.
Here in Oz, the load time for the Chrysler locale goes from ~18s to ~12s with this PR. Not as impressive as your numbers, but still a very nice improvement! I don't see any downside to this, and a huge upside, so I'm merging it.
Decrease the value of
HttpThreadActiveFrameTimeInSeconds
, from 0.005 to 0.001. This controls how often Unreal Engine polls libcurl. Now we do it more often.Overall, all test locales seem to benefit.
In the most demanding tests (Google Tiles), load times are ~2.5x faster. Previously, a user who viewed the NYC Chrysler building would wait ~14 seconds for it to load. Now it only takes 6 seconds.
Tested these things:
Performance Tests Summary (cold cache)
Complete Testing Data
Performance Video Compare.webm