perf: hak-audit — spredte timere, fælles cache (markør->station, salgssteder, identify, Wait-punkter, lagre, positioner), bygningsliste 10 s, profiler, simulering (v1.28.0.0)
Audit (2 reviewere) + simulering bench/bench_hak.lua: værste frame 124,7 ms -> 0,9 ms. - Holdende vognes genplanlægning (5 s) spredes tilfældigt over hele intervallet (før: alle i samme frame). - ADCache: korttids-cache m. spredt udløb (+0-50 %), kun aktiv i spillet; stationsopslag 30 s. - Bygningsliste 10 s (før 1 s: bygninger x markører hvert sekund). Markarbejde-tick forskudt 0,5 s fra menuen. - ADProfiler: logger top-6 langsomste indgange pr. minut ved > 2 ms.
This commit is contained in:
@@ -14,6 +14,8 @@ ADOutbound = {}
|
||||
ADOutbound.LOG_PREFIX = "ADSmartPickup: "
|
||||
-- Holdende traktorer spørger planlæggeren så tit (opslag over alle markører).
|
||||
ADOutbound.CHECK_INTERVAL_MS = 5000
|
||||
-- spred over HELE intervallet, så genplanlægningerne (og cache-genberegninger) fordeles jævnt
|
||||
ADOutbound.CHECK_JITTER_MS = 5000
|
||||
-- "Kør uanset mængde": stiger vognens fyldning ikke så længe ved kilden, køres der med det der er.
|
||||
ADOutbound.NO_PROGRESS_MS = 15000
|
||||
-- Objektlager der ikke leverer en palle inden så længe regnes som fastlåst (kendt spilfejl).
|
||||
@@ -498,7 +500,8 @@ local function startHold(adEnv, vehicle, run, reasons, sourcesById)
|
||||
warnOnce(adEnv, vehicle, "noWait", string.format("'%s' har intet ledigt Wait-punkt med vejnet (run '%s'); holder ved kilden %s", tostring(ADRuns.vehicleLabel(vehicle)), tostring(run.name), tostring(marker.name)))
|
||||
end
|
||||
local previous = holds[vehicle]
|
||||
holds[vehicle] = {markerId = marker.id, markerName = tostring(marker.name), reasons = reasons, timerMs = 0}
|
||||
-- tilfældig start (0-2 s) så holdende vogne ikke genplanlægger i samme frame (hak hvert 5. s, 26/9)
|
||||
holds[vehicle] = {markerId = marker.id, markerName = tostring(marker.name), reasons = reasons, timerMs = math.random(0, ADOutbound.CHECK_JITTER_MS)}
|
||||
local message = string.format("'%s' holder ved %s: %s", tostring(ADRuns.vehicleLabel(vehicle)), tostring(marker.name), table.concat(reasons, "; "))
|
||||
if previous == nil or previous.lastLogged ~= message then
|
||||
Logging.info(ADOutbound.LOG_PREFIX .. "%s", message)
|
||||
|
||||
Reference in New Issue
Block a user