Thank you!
I didn’t know much about this API.
After your message, I found your thread about the PlayerLoop API ( Prevent Custom Update Loop running post playmode ) with some usefull informations and links.
I managed to remove these useless calls using this script:
using System;
using UnityEngine;
using UnityEngine.LowLevel;
using UnityEngine.PlayerLoop;
public static class PlayerLoopCleaner
{
private static readonly Type[] typesToRemove = new Type[] {
// Physics 2D
#if UNITY_2022_2_OR_NEWER
typeof(EarlyUpdate.Physics2DEarlyUpdate),
#endif
typeof(FixedUpdate.Physics2DFixedUpdate),
typeof(PreUpdate.Physics2DUpdate),
typeof(PreLateUpdate.Physics2DLateUpdate),
// Director
typeof(Initialization.DirectorSampleTime),
typeof(FixedUpdate.DirectorFixedSampleTime),
typeof(FixedUpdate.DirectorFixedUpdate),
typeof(FixedUpdate.DirectorFixedUpdatePostPhysics),
typeof(Update.DirectorUpdate),
typeof(PreLateUpdate.DirectorUpdateAnimationBegin),
typeof(PreLateUpdate.DirectorUpdateAnimationEnd),
typeof(PreLateUpdate.DirectorDeferredEvaluate),
typeof(PostLateUpdate.DirectorLateUpdate),
typeof(PostLateUpdate.DirectorRenderImage),
// AI
typeof(PreUpdate.AIUpdate),
typeof(PreLateUpdate.AIUpdatePostScript),
// Wind
typeof(PreUpdate.WindUpdate),
// Cloth
typeof(PostLateUpdate.PhysicsSkinnedClothBeginUpdate),
typeof(PostLateUpdate.PhysicsSkinnedClothFinishUpdate),
// Old network system
typeof(PreLateUpdate.UpdateNetworkManager)
};
private static readonly string[] typesToRemoveAsString = new string[] {
// Cloth internal types
"UnityEngine.PlayerLoop.FixedUpdate+PhysicsClothFixedUpdate",
"UnityEngine.PlayerLoop.PreUpdate+PhysicsClothUpdate"
};
[RuntimeInitializeOnLoadMethod]
private static void RemoveUnusedPackageFromPlayerLoop()
{
PlayerLoopSystem playerLoop = PlayerLoop.GetCurrentPlayerLoop();
//DisplayRecursivly(0, playerLoop);
foreach(Type type in typesToRemove)
{
TryRemoveTypeFrom(ref playerLoop, type);
}
foreach (string type in typesToRemoveAsString) {
TryRemoveTypeFrom(ref playerLoop, type);
}
//DisplayRecursivly(10, playerLoop);
PlayerLoop.SetPlayerLoop(playerLoop);
}
private static void DisplayRecursivly(int level, PlayerLoopSystem system)
{
Debug.Log(level + " " + system.type);
if (system.subSystemList != null)
{
Debug.Log(level + " subSystemList.Length: " + system.subSystemList.Length);
foreach (PlayerLoopSystem sys in system.subSystemList)
{
DisplayRecursivly(level + 1, sys);
}
}
}
/// <summary>
/// From https://github.com/Baste-RainGames/PlayerLoopInterface/blob/a4c15199ecb5f88b8a5009d0c391b967d768068c/Runtime/PlayerLoopInterface.cs#L136
/// </summary>
/// <param name="currentSystem"></param>
/// <param name="type"></param>
/// <returns></returns>
private static bool TryRemoveTypeFrom(ref PlayerLoopSystem currentSystem, Type type)
{
PlayerLoopSystem[] subSystems = currentSystem.subSystemList;
if (subSystems == null)
{
return false;
}
for (int i = 0; i < subSystems.Length; i++)
{
if (subSystems[i].type == type)
{
PlayerLoopSystem[] newSubSystems = new PlayerLoopSystem[subSystems.Length - 1];
Array.Copy(subSystems, newSubSystems, i);
Array.Copy(subSystems, i + 1, newSubSystems, i, subSystems.Length - i - 1);
currentSystem.subSystemList = newSubSystems;
return true;
}
if (TryRemoveTypeFrom(ref subSystems[i], type))
{
return true;
}
}
return false;
}
private static bool TryRemoveTypeFrom(ref PlayerLoopSystem currentSystem, string type)
{
PlayerLoopSystem[] subSystems = currentSystem.subSystemList;
if (subSystems == null) {
return false;
}
for (int i = 0; i < subSystems.Length; i++) {
if (subSystems[i].type.ToString() == type) {
PlayerLoopSystem[] newSubSystems = new PlayerLoopSystem[subSystems.Length - 1];
Array.Copy(subSystems, newSubSystems, i);
Array.Copy(subSystems, i + 1, newSubSystems, i, subSystems.Length - i - 1);
currentSystem.subSystemList = newSubSystems;
return true;
}
if (TryRemoveTypeFrom(ref subSystems[i], type)) {
return true;
}
}
return false;
}
}
I benchmarked on an empty project with empty scene and just the script above. It sems to gain 0.050ms (on an old i5 3rd gen 4 cores 4 threads @3.10GHz). I’m not sure it’s worth the time to develop this, but I least I have learned something 
Now I have two more questions: