Time.time vs DateTime.UtcNow.Millisecond 在 Unity3D 中的性能?
Time.time vs DateTime.UtcNow.Millisecond performance in Unity3D?
在用 Unity 构建的多人游戏中,我需要经常跟踪时间,以便知道数据包何时进入。在 Unity 中有什么更好的性能,Time.time 或 DateTime.UtcNow.Millisecond?性能差异有多大?
最好自己测试一下。您是最了解您的应用程序并且可以说出在特定条件下什么是最佳解决方案的人。这是您可以使用的一些简单测试脚本。它只是使用 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()
- 由于分支预测,未使用可能比其他路径更喜欢路径的分支
- 如有必要,重复多次以确保秒表的分辨率足够,并且秒表调用成本的任何潜在变化都微不足道
在用 Unity 构建的多人游戏中,我需要经常跟踪时间,以便知道数据包何时进入。在 Unity 中有什么更好的性能,Time.time 或 DateTime.UtcNow.Millisecond?性能差异有多大?
最好自己测试一下。您是最了解您的应用程序并且可以说出在特定条件下什么是最佳解决方案的人。这是您可以使用的一些简单测试脚本。它只是使用 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()
- 由于分支预测,未使用可能比其他路径更喜欢路径的分支
- 如有必要,重复多次以确保秒表的分辨率足够,并且秒表调用成本的任何潜在变化都微不足道