50 bool skipVanilla =
false;
52 "OnIUpdateableAddOrRemove",
54 loader.OnIUpdateableAddOrRemove(
this, item.Key, item.Value, skipVanilla, out
bool skip);
72 foreach (KeyValuePair<IUpdateable, UpdateableInfo> updateable
in m_updateables) {
73 float updateOrder = updateable.Key.FloatUpdateOrder;
74 if (updateOrder != updateable.Value.FloatUpdateOrder) {
76 updateable.Value.FloatUpdateOrder = updateOrder;
93 lock (sortedUpdateable) {
94 sortedUpdateable.
Update(dt);
102 Type type = sortedUpdateable.GetType();
103 long ticksCosted = m_debugStopwatch.ElapsedTicks - ticks;
109 info.TotalTicksCosted += ticksCosted;
110 if (ticksCosted > info.MaxTicksCosted1) {
111 info.MaxTicksCosted1 = ticksCosted;
113 else if (ticksCosted > info.MaxTicksCosted2) {
114 info.MaxTicksCosted2 = ticksCosted;
125#pragma warning disable CS0618
126 loader.SubsystemUpdate(dt);
127#pragma warning restore CS0618
128 loader.SubsystemUpdate(
this, dt);
157 int maxTypeNameLength = 1;
159 maxTypeNameLength =
m_debugInfos.Keys.Max(type => type.FullName?.Length ?? 0) + 1;
161 StringBuilder stringBuilder =
new();
162 stringBuilder.AppendLine(
"====== SubsystemUpdate Performance Analyze ======");
163 stringBuilder.Append(
"TypeName".PadRight(maxTypeNameLength));
164 stringBuilder.Append(
" Counter TotalTime AverageTime MaxTime1 MaxTime2");
165 foreach ((Type type,
DebugInfo info) in
m_debugInfos.OrderByDescending(pair => pair.Value.TotalTicksCosted)) {
166 stringBuilder.AppendLine();
167 stringBuilder.Append(type.FullName?.PadRight(maxTypeNameLength));
168 stringBuilder.Append(info.
Counter.ToString().PadLeft(11));
169 stringBuilder.Append($
"{(float)info.TotalTicksCosted / Stopwatch.Frequency * 1000:F}ms".PadLeft(12));
170 stringBuilder.Append($
"{(float)info.TotalTicksCosted / info.Counter / Stopwatch.Frequency * 1000000f:F}μs".PadLeft(12));
171 stringBuilder.Append($
"{(float)info.MaxTicksCosted1 / Stopwatch.Frequency * 1000000f:F}μs".PadLeft(12));
172 stringBuilder.Append($
"{(float)info.MaxTicksCosted2 / Stopwatch.Frequency * 1000000f:F}μs".PadLeft(12));