mirror of https://github.com/OpenTTD/OpenTTD
Fix 7e1e275: Measure AI Collect Garbage performance (#9924)
parent
4a58d197ee
commit
df89c34e03
|
@ -82,18 +82,16 @@
|
||||||
PerformanceMeasurer framerate((PerformanceElement)(PFE_AI0 + c->index));
|
PerformanceMeasurer framerate((PerformanceElement)(PFE_AI0 + c->index));
|
||||||
cur_company.Change(c->index);
|
cur_company.Change(c->index);
|
||||||
c->ai_instance->GameLoop();
|
c->ai_instance->GameLoop();
|
||||||
|
/* Occasionally collect garbage; every 255 ticks do one company.
|
||||||
|
* Effectively collecting garbage once every two months per AI. */
|
||||||
|
if ((AI::frame_counter & 255) == 0 && (CompanyID)GB(AI::frame_counter, 8, 4) == c->index) {
|
||||||
|
c->ai_instance->CollectGarbage();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
PerformanceMeasurer::SetInactive((PerformanceElement)(PFE_AI0 + c->index));
|
PerformanceMeasurer::SetInactive((PerformanceElement)(PFE_AI0 + c->index));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cur_company.Restore();
|
cur_company.Restore();
|
||||||
|
|
||||||
/* Occasionally collect garbage; every 255 ticks do one company.
|
|
||||||
* Effectively collecting garbage once every two months per AI. */
|
|
||||||
if ((AI::frame_counter & 255) == 0) {
|
|
||||||
CompanyID cid = (CompanyID)GB(AI::frame_counter, 8, 4);
|
|
||||||
if (Company::IsValidAiID(cid)) Company::Get(cid)->ai_instance->CollectGarbage();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* static */ uint AI::GetTick()
|
/* static */ uint AI::GetTick()
|
||||||
|
|
Loading…
Reference in New Issue