Unity3D 中的 Time.time 与 DateTime.UtcNow.Millisecond 性能?

dan*_*ski 5 c# mono performance unity-game-engine unity5

我需要在我用 Unity 构建的多人游戏中跟踪很多时间,以便知道数据包何时进入。在 Unity、Time.time 或 DateTime.UtcNow.Millisecond 中什么会更好?性能差异会有多少变化?

小智 4

最好自己测试一下。您是最了解您的应用程序并能够判断特定条件下最佳解决方案的人。这是一些您可以使用的简单测试脚本。它只是使用 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

与大多数情况一样,这次非统一函数似乎更快。至少在我的电脑上是这样。不知道您的应用程序将如何工作,但请记住,使用毫秒值时可能会发生冲突。使用 Time.time 还有一个缺点 - 您只能在主线程中执行此操作。当您有网络应用程序时,您很有可能希望在后台线程上保存时间戳。