userDaniel Pcancel
branchrust_reboot/main/useplayerupdatejobs3/free_taskscancel

12 Commits over 0 Days - ∞cph!

16 Days Ago
Optim: Jobs 3 - save allocs by using UniTask for sending entity snapshots asynchonously Think that's all existing tasks converted Tests: loaded on craggy and teleported to/from the island
16 Days Ago
Clean: get rid of handwritten UpdateSubs_AsyncState state machine Tests: unit tests
16 Days Ago
Optim: Jobs 3 - rewrite EAC and analytics tasks into UniTasks to remove allocs Discovered server profiler is megaborked, no idea what caused it. Will investigate after rewrite is done Tests: craggy in editor with jobs 3
16 Days Ago
Optim: Jobs 3 - OcclusionSendUpdates now uses UniTasks - added UseUniTasks feature flag controlled by UsePlayerUpdateJobs 3 Positive experiemnt, can get rid of the hand-rolled state machine and use async-await. Tests: profiled 2 players in editor beign destroyed by server occlusion - no allocs for task
16 Days Ago
Update: server enables SetPoolRunnersActive to reduce allocs of SwitchToThreadPoolAwaitable during tier0 init Tests: loaded on craggy (with and without jobs 3), teleported around
16 Days Ago
Optim: UpdateSubscriptions - replace Tasks with UniTasks They're slightly slower on a stress test, but they allocate an order less (and sometimes don't allocate) - 0.5MB vs 8KB over 10 run Tests: unit tests
16 Days Ago
Update: plug in our fork of UniTask - ecb0489 It has reduced allocations, but there are still some APIs that allocate Tests: unit tests pass
20 Days Ago
Optim: FPTask.Run is now 0 allocs Using reflection, manually invoke internals while sneaking in our cached callback Tests: ran unit test
20 Days Ago
Update: add UniTask for evaluation In simle case only has 1 alloc that's not pooled, same as FPTask - will try to solve it locally first Tests: ran unit test
20 Days Ago
Update: basic FPTask + dumb single task scheduler This gives us 1 alloc/40bytes per task baseline, but with a bit of hacking I think can bring it to 0 Tests: ran unit test
20 Days Ago
Update: more research - looks like we do need our own task type Tests: uni tests
20 Days Ago
Update: initial investigation trying to reduce async-await gc overhead Goal is to find better alternative to custom async states I've been handwriting, as they still require an alloc per task Tests: ran unit test