Load-time attribution: the minute is the renderers' entity-make streams
Measured (loadphase markers + queue blocker dump): renderer LoadMission 31ms, model loads 0.2s -- the teal->green minute is the LoadingMission ready-gate (IsPriorityEmpty counts timed events too) waiting out the THREE renderers' entity-make streams: every entity/subsystem creation posts message 3 to each Renderer receiver (classIDs 8/30/36 = video/audio/gauge), hundreds deep per queue, draining across the whole window (the audio renderer's share is why sound starts mid-load). Instrumentation kept: [loadphase] markers (renderer span + busy-pass counter) always on; GeneralEventQueue::DumpBlockers + the class-named DumpData fallback behind BT_LOAD_DIAG=1 (hundreds of lines per load). Optimizing the drain (batching/budget) is an open perf item -- deliberately untouched before the 8-player night. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
0ef5a3c4e1
commit
7b3e76db38
+28
-1
@@ -295,7 +295,9 @@ void
|
||||
else
|
||||
{
|
||||
Vanilla_Message:
|
||||
DEBUG_STREAM << "Message " << messageToSend->messageID << " for object of classID " << target->GetClassID() << std::endl << std::flush;
|
||||
DEBUG_STREAM << "Message " << messageToSend->messageID << " for "
|
||||
<< (target->GetDerivation() ? target->GetDerivation()->className : "?")
|
||||
<< " (classID " << target->GetClassID() << ")" << std::endl << std::flush;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -718,6 +720,31 @@ Logical
|
||||
return !i.GetCurrent() && !j.GetCurrent();
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
void
|
||||
GeneralEventQueue::DumpBlockers(int priority)
|
||||
{
|
||||
Check(this);
|
||||
Verify(priority >= 0 && priority < priorityLevels);
|
||||
ChainIteratorOf<AbstractEvent*> pending(this[priority].pendingEvents);
|
||||
AbstractEvent *event;
|
||||
while ((event = pending.GetCurrent()) != NULL)
|
||||
{
|
||||
DEBUG_STREAM << "[loadphase] pending: " << std::flush;
|
||||
event->DumpData();
|
||||
pending.Next();
|
||||
}
|
||||
ChainIteratorOf<AbstractEvent*> timed(this[priority].timedEvents);
|
||||
while ((event = timed.GetCurrent()) != NULL)
|
||||
{
|
||||
DEBUG_STREAM << "[loadphase] timed(+"
|
||||
<< (float)(event->alarmTime - Now()) << "s): " << std::flush;
|
||||
event->DumpData();
|
||||
timed.Next();
|
||||
}
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
Logical
|
||||
|
||||
Reference in New Issue
Block a user