2,787 Commits over 669 Days - 0.17cph!
Optim: Replace Physics.OverlapBox with Physics.CheckBox in BaseVehicle.VehicleFixedUpdate
Saves allocating the results array, and should be cheaper as well
Tests: none, trivial change
Optim: get rid of string alloc in BaseCombatEntity.Hurt
1alloc/32b
Tests: none, trivial change
Optim: SpawnGroup - SpawnInstances not returns a List instead of IEnumerable
Allows to save on iterator allocation, 40b
Tests: none, trivial change
Optim: cache UpdateNetworkGroup invoke
Saves 1 alloc/128b
Tests: none, trivial change
Optim: cache PlayRadioChatter invoke
Saves 1 alloc/128b
Tests: none, trivial change
Optim: cache 2 invokes in Buoyancy.CheckSleepState
Saves 2 allocs/256b
Tests: none, trivial change
Optim: cache RemoveCorpse invoke
Saves 3 allocs, 384b total
Tests: none, trivial change
Undo of previous change - since entities can only be demolished once, the change was useless (and wasted memory)
Optim: cache StopBeingDemolishable invoke
1 alloc/128b
Tests: none, trivial change
Optim: use static action in ServerBuildingManager.Split
Should save another 2 allocs/160b per building block
Tests: none, trivial change
Clean: tabs -> spaces, get rid of explicit generic args
Tests: none, trivial change
Optim: use static callback to avoid allocs in ServerBuildingManager.CheckMerge
Saves 2 allocs, 160b total
Tests: none, trivial change
Optim: get rid of LINQ in Planner.FindSocket
Saves 3 allocs/180b total
Tests: none, trivial change
Optim: cache UpdatedVisibleHolsteredItems invoke
Saves 1 alloc/128b
Tests: none, trivial change
Optim: avoid boxing allocs in Azure.LogResource
Weirdly Enum.ToString has 2 boxing allocs, totalling 48b.
Tests: none, trivial change
Clean: fixup formatting in BasePlayer.OnProjectileAttack
Tests: none, trivial change
▍ ▊▋▌▇▅▋ ▄▆▄█▍ ▄▊█ ▊▇▋▆▉ ▄▇▄▇ ▌▇▊ ▄ ▋▅▉▉▇▉▋▄▍▌█▉▋▍▍▉▅█ ▅▋ ▇█ ▅█▄▄ ▉ ▊▊█▄▍█▋▇▅ █▌▉█ ▍▇▊▉▆▋▋▅█ █▅ ▇▅▍▊▆▍▅▉ ▇▍ ▄█▉▌▉▄▍▉▋▄▇▍▋ ▋▄▋▊▅ ▇▆█▅▅▇▊ ▋▉▅▄▅▇
Optim: cache RemoveOldNoises invoke
Saves 1-2 allocs, 128b each
Tests: none, trivial changes
Optim: use pooling in BaseNetworkable::OnNetworkLimitStart
Saves us 3 allocs, 100b min
Tests: none, trivial change
Optim: cache action in PlayerLoot.MarkDirty
1 alloc/128b
Tests: none, trivial change
Optim: cache PlayerLoot.MarkDirty action creation
Saves 1 alloc/128b per container
Tests: none, trivial change
Optim: cache actions in TrainEngine.PlayerServerInput
Saves 2 actions, 128b per
Tests: none, trivial change
Optim: cache BasePlayer.ForceUpdateTriggersAction allocation
Saves a single 128b alloc
Tests: none, trivial change
Merge: from buildcommand_allocs
- Bugfix for enable_marker_teleport teleporting to wrong Z
Tests: unit tests + enable_marker_teleport
Optim: get rid of a string alloc in teleportpos
Forgot it when expanding string view compatibility
Tests: used enable_marker_teleport
Bugfix: fix invalid trimming in ToVector(StringView)
- StringView - add 2- and 3-char Trim overloads
- add a unit test
Tests: unit tests + enable_marker_teleport
Clean: add root-level *.slnx to plastic ignore list
Tests: plastic doesn't show it as a new file
Merge: from player_benchmark_improvements
- New: added PlayerModelBenchmark scene that tracks rendering cost of new player model
Tests: ran benchmark a couple times
Clean: remove UNITY_EDITOR ifdefs around logging
Tests: none, trivial change
Update: disable lightmap baking on scene load for PlayerModelBenchmark
Tests: deleted generated assets, reopened scene - no new lightdata
Update: add PlayerModelBenchmark scene to the build list
- also add it to recognized +autobench list
Tests: none, trivial change
Update: add PlayerModelBenchmarks cene shortcut to Scenes menu
Tests: compiles
Update: resave after unity 6 upgrade
Tests: ran benchmark
Merge: from player_benchmark_improvements
Clean: remove naked player bench from ClothingBenchmark
Superceded by PlayerModelBenchmark
Tests: none, trivial change
Bugfix: avoid NRE when no recorders are requested by a benchmark
Tests: ran ClothingBenchmark
Update: PlayerModelBenchmarkScene - record bone count of spamed player models
Tests: ran benchmark
Update: BenchmarkScene - add support for selecting which recorders to activate
- added Scripts and Physics recorders
- PlayerModelBenchmark uses only Rendering + Animation ones
Tests: ran benchmark with various category bitfields
Update: add "CPU Total Frame Time" recorder
Tests: ran baseline
Update: add mainthread-only Camera.Render recorder
Tests: ran baseline
Update: PlayerModelBenchmark - add baseline run (0 models)
- change bench naming convention
Tests: none, trivial changes
Clean: get rid of RecordSampleCount - it duplicates MaxNumberOfFrames
Tests: none, trivial change
Update: Allow benchmark to stop after enough samples accumulated
- converted PlayerModelBenchmarkScene to run till 1k sampels accumulated
- support accumulated sample wraparound (explains weird results I saw previously)
Tests: ran player benchmark
Update: Add PlayerModelBenchmarkScene.UseRandomAnims - spawns players with different model states
- add a run per lod level with anims (bringing total to 12)
In theory should break batching/reuse, but results are a bit too similar(editor overhead?)
Tests: ran the scene