C# Time.Time vs DateTime.utcnoUnity3D中的低毫秒性能?
在我用Unity构建的多人游戏中,我需要记录很多时间,以便知道数据包何时到达。在Unity、Time.Time或DateTime.UtcNow.millis秒中,什么性能更好?性能差异会有多大?最好自己测试一下。您是最了解您的应用程序的人,并且能够知道在特定条件下什么是最佳解决方案。这是一些可以使用的简单测试脚本。它只需使用unity/c#方法保存当前时间戳,并记录该操作所需的时间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
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()
- 由于分支预条件,不使用可能在路径上优先于其他分支的分支
- 如有必要,重复多次,以确保秒表的分辨率足够,且秒表呼叫成本的任何潜在变化都是微不足道的
DateTime.UtcNow.millished
完全不同,后者以UTC表示系统时间。你可能想要后者。@Serlite我想OP知道这一点。通过减去它们,您可以将两者用作计时器。我认为OP想知道哪一个更快或更推荐。@程序员使用更适合时间戳的那个似乎是合乎逻辑的,这就是为什么我怀疑OP可能是错的。。。(如果不在客户端做额外的计算,游戏开始后的时间对于在多人游戏中排序数据并不十分有用,因为每个玩家的时间会有所不同)。这个问题只用于跟踪客户端的时间戳