C# Time.Time vs DateTime.utcnoUnity3D中的低毫秒性能?

C# Time.Time vs DateTime.utcnoUnity3D中的低毫秒性能?,c#,performance,unity3d,mono,unity5,C#,Performance,Unity3d,Mono,Unity5,在我用Unity构建的多人游戏中,我需要记录很多时间,以便知道数据包何时到达。在Unity、Time.Time或DateTime.UtcNow.millis秒中,什么性能更好?性能差异会有多大?最好自己测试一下。您是最了解您的应用程序的人,并且能够知道在特定条件下什么是最佳解决方案。这是一些可以使用的简单测试脚本。它只需使用unity/c#方法保存当前时间戳,并记录该操作所需的时间 public class TimeTest : MonoBehaviour { public bool U

在我用Unity构建的多人游戏中,我需要记录很多时间,以便知道数据包何时到达。在Unity、Time.Time或DateTime.UtcNow.millis秒中,什么性能更好?性能差异会有多大?

最好自己测试一下。您是最了解您的应用程序的人,并且能够知道在特定条件下什么是最佳解决方案。这是一些可以使用的简单测试脚本。它只需使用unity/c#方法保存当前时间戳,并记录该操作所需的时间

public class TimeTest : MonoBehaviour
{
    public bool UseUnityFuntion;

    private string msg;

    void Update ()
    {
        var stopwatch = Stopwatch.StartNew();
        msg = UseUnityFuntion 
            ? Time.time.ToString() 
            : DateTime.UtcNow.Millisecond.ToString();
        stopwatch.Stop();
        UnityEngine.Debug.Log(stopwatch.ElapsedTicks);
    }

    void OnGUI()
    {
        if (msg != null) GUILayout.Label(msg);
    }
}
与大多数情况一样,这次非统一函数似乎更快。至少在我的电脑上是这样。我不知道你们的应用程序会如何工作,但请记住,当你们使用毫秒值时,可能会发生冲突。
使用Time.Time还有一个缺点——您只能在主线程中这样做。当您使用网络应用程序时,很可能希望在后台线程上保存时间戳

对于性能测试,我建议:

  • 在已分析的节中不使用ToString()
  • 由于分支预条件,不使用可能在路径上优先于其他分支的分支
  • 如有必要,重复多次,以确保秒表的分辨率足够,且秒表呼叫成本的任何潜在变化都是微不足道的

Uuuh……这两个值的含义不同。以秒为单位显示游戏开始后的时间。这与
DateTime.UtcNow.millished
完全不同,后者以UTC表示系统时间。你可能想要后者。@Serlite我想OP知道这一点。通过减去它们,您可以将两者用作计时器。我认为OP想知道哪一个更快或更推荐。@程序员使用更适合时间戳的那个似乎是合乎逻辑的,这就是为什么我怀疑OP可能是错的。。。(如果不在客户端做额外的计算,游戏开始后的时间对于在多人游戏中排序数据并不十分有用,因为每个玩家的时间会有所不同)。这个问题只用于跟踪客户端的时间戳