コード例 #1
0
 public void AddChildResult(ThreadLocalDeepProfiler.Watcher w)
 {
     if (this.children == null)
     {
         this.children = new List <ThreadLocalDeepProfiler.Watcher>();
     }
     this.children.Add(w);
 }
コード例 #2
0
        private void Output(ThreadLocalDeepProfiler.Watcher root)
        {
            StringBuilder stringBuilder = new StringBuilder();

            if (UnityData.IsInMainThread)
            {
                stringBuilder.AppendLine("--- Main thread ---");
            }
            else
            {
                stringBuilder.AppendLine("--- Thread " + Thread.CurrentThread.ManagedThreadId + " ---");
            }
            this.AppendStringRecursive(stringBuilder, root, 0);
            Log.Message(stringBuilder.ToString());
        }
コード例 #3
0
 private void AppendStringRecursive(StringBuilder sb, ThreadLocalDeepProfiler.Watcher w, int depth)
 {
     sb.AppendLine(string.Concat(new object[]
     {
         ThreadLocalDeepProfiler.Prefixes[depth],
         " ",
         w.Watch.ElapsedMilliseconds,
         "ms ",
         w.Label
     }));
     if (w.Children != null)
     {
         for (int i = 0; i < w.Children.Count; i++)
         {
             this.AppendStringRecursive(sb, w.Children[i], depth + 1);
         }
     }
 }
コード例 #4
0
 public void End()
 {
     if (!Prefs.LogVerbose)
     {
         return;
     }
     if (this.watchers.Count == 0)
     {
         Log.Error("Ended deep profiling while not profiling.");
         return;
     }
     ThreadLocalDeepProfiler.Watcher watcher = this.watchers.Pop();
     watcher.Watch.Stop();
     if (this.watchers.Count > 0)
     {
         this.watchers.Peek().AddChildResult(watcher);
     }
     else
     {
         this.Output(watcher);
     }
 }