Ejemplo n.º 1
0
        public override void CollectData(ProfilerFrameData frameData)
        {
            if (frameData == null)
            {
                return;
            }


            foreach (var thread in frameData.m_ThreadData)
            {
                if (thread.m_AllSamples == null)
                {
                    continue;
                }
                foreach (var sample in thread.m_AllSamples)
                {
                    if (sample != null && sample.parent != null && sample.sampleName == "GC.Alloc")
                    {
                        var parent = sample.parent;
                        AddData(thread.FullName, parent, GetCallStackInfo(frameData, sample),
                                parent.GetSelfChildGcAlloc());
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public override void CollectData(ProfilerFrameData frameData)
        {
            // 特別枠で frameDataのCPU時間を追加
            ThreadViewData frameViewData = null;

            if (!this.viewData.TryGetValue(FrameWholeDataSpecialKey, out frameViewData))
            {
                frameViewData = new ThreadViewData(FrameWholeDataSpecialKey);
                viewData.Add(FrameWholeDataSpecialKey, frameViewData);
            }
            frameViewData.AddMsec(frameData.frameIndex, frameData.m_TotalCPUTimeInMicroSec / 1000.0f, 0.0f, 0, 0);

            // 同一フレーム内に同じスレッド名が複数できるので…
            Dictionary <string, int> threadNameCounter = new Dictionary <string, int>(8);

            foreach (var thread in frameData.m_ThreadData)
            {
                string threadName = thread.FullName;
                if (threadName == null)
                {
                    continue;
                }
                int cnt = 0;
                if (threadNameCounter.TryGetValue(threadName, out cnt))
                {
                    ++cnt;
                    threadName = threadName + cnt;
                }
                threadNameCounter[threadName] = cnt;
                this.AddDataTo(frameData.frameIndex, threadName, thread);
            }
        }
Ejemplo n.º 3
0
        public override void CollectData(ProfilerFrameData frameData)
        {
            if (frameData == null)
            {
                return;
            }
            HashSet <ProfilerSample> doneList = new HashSet <ProfilerSample>();

            foreach (var thread in frameData.m_ThreadData)
            {
                if (thread.m_AllSamples == null)
                {
                    continue;
                }
                foreach (var sample in thread.m_AllSamples)
                {
                    if (sample != null && sample.parent != null && sample.sampleName == "GC.Alloc")
                    {
                        var parent = sample.parent;
                        if (!doneList.Contains(parent))
                        {
                            AddData(thread.FullName, parent, parent.GetSelfChildGcAlloc());
                            doneList.Add(parent);
                        }
                    }
                }
            }
        }
Ejemplo n.º 4
0
 public override void CollectData(ProfilerFrameData frameData)
 {
     foreach (var threadData in frameData.m_ThreadData)
     {
         CollectThreadData(frameData.frameIndex, threadData);
     }
 }
Ejemplo n.º 5
0
        private string GetCallStackInfo(ProfilerFrameData frameData, ProfilerSample profilerSample)
        {
            if (profilerSample == null)
            {
                return("");
            }
            var callStackInfo = profilerSample.callStackInfo;

            if (callStackInfo == null)
            {
                return("");
            }
            stringBuilder.Length = 0;

            int  length       = callStackInfo.stack.Length;
            bool isAlreadyAdd = false;

            for (int i = length - 1; i >= 0; --i)
            {
                var info = frameData.FindJitInfoFromAddr(callStackInfo.stack[i]);
                if (info == null)
                {
                    continue;
                }
                if (isAlreadyAdd)
                {
                    stringBuilder.Append("->");
                }
                stringBuilder.Append("[");
                CsvStringGenerator.AppendAddrStr(stringBuilder, info.codeAddr, 16).Append("]");
                stringBuilder.Append(info.name);
                isAlreadyAdd = true;
            }
            return(stringBuilder.ToString());
        }
Ejemplo n.º 6
0
 public void CollectData(ProfilerFrameData frameData)
 {
     if (frameData == null || frameData.allStats == null || frameData.allStats.memoryStats == null)
     {
         return;
     }
     frameIdxList.Add(frameData.frameIndex);
     memoryStatsList.Add(frameData.allStats.memoryStats);
 }
Ejemplo n.º 7
0
 public override void CollectData(ProfilerFrameData frameData)
 {
     if (frameData == null || frameData.allStats == null || frameData.allStats.drawStats == null)
     {
         return;
     }
     frameIdxList.Add(frameData.frameIndex);
     drawStatsList.Add(frameData.allStats.drawStats);
 }
Ejemplo n.º 8
0
 public override void CollectData(ProfilerFrameData frameData)
 {
     foreach (var threadData in frameData.m_ThreadData)
     {
         if (threadData.m_ThreadName == "Render Thread")
         {
             CollectRenderThreadData(frameData.frameIndex, threadData);
         }
     }
 }
Ejemplo n.º 9
0
 public void CollectData(ProfilerFrameData frameData)
 {
     foreach (var thread in frameData.m_ThreadData)
     {
         if (thread.IsMainThread)
         {
             ExecuteThreadData(frameData.frameIndex, thread);
         }
     }
 }
Ejemplo n.º 10
0
        public override void CollectData(ProfilerFrameData frameData)
        {
            FrameGpuTime frameGpuTime = new FrameGpuTime();

            frameGpuTime.frameIdx = frameData.frameIndex;

            foreach (var threadData in frameData.m_ThreadData)
            {
                AddGpuSampleByThread(threadData, frameGpuTime);
            }
            this.frameGpuTimes.Add(frameGpuTime);
        }
Ejemplo n.º 11
0
 public override void CollectData(ProfilerFrameData frameData)
 {
     // 特別枠で frameDataのCPU時間を追加
     // 同一フレーム内に同じスレッド名が複数できるので…
     Dictionary<string, int> threadNameCounter = new Dictionary<string, int>(8);
     foreach (var thread in frameData.m_ThreadData)
     {
         if (thread.m_ThreadName == "Worker Thread" || thread.m_GroupName  == "Job" )
         {
             CollectThread(thread);
         }
     }
 }
 private void CollectThread(ProfilerFrameData frameData, ThreadData thread)
 {
     if (thread == null || thread.m_AllSamples == null)
     {
         return;
     }
     foreach (var sample in thread.m_AllSamples)
     {
         if (sample.parent == null)
         {
             CollectFromNamedChildren(frameData, sample);
         }
     }
 }
        public override void CollectData(ProfilerFrameData frameData)
        {
            // 特別枠で frameDataのCPU時間を追加
            // 同一フレーム内に同じスレッド名が複数できるので…
            Dictionary <string, int> threadNameCounter = new Dictionary <string, int>(8);

            foreach (var thread in frameData.m_ThreadData)
            {
                if (thread.IsMainThread)
                {
                    CollectThread(thread);
                }
            }
            ++frameNum;
        }
 private void CollectFromNamedChildren(ProfilerFrameData frameData, ProfilerSample sample)
 {
     if (!string.IsNullOrEmpty(sample.sampleName))
     {
         string category = ProtocolData.GetCategory(frameData, unityVersion, sample.group);
         AddSampleData(sample.fullSampleName, sample.sampleName, category, sample.selfTimeUs / 1000.0f, sample.timeUS / 1000.0f);
     }
     if (sample.children != null)
     {
         foreach (var child in sample.children)
         {
             CollectFromNamedChildren(frameData, child);
         }
     }
     return;
 }
Ejemplo n.º 15
0
        private void CollectData(ProfilerFrameData frameData)
        {
            var mainThread = frameData.MainThread;

            if (mainThread == null || mainThread.m_AllSamples == null)
            {
                return;
            }
            List <ColumnData> hitInThisFrame = new List <ColumnData>();

            foreach (var sample in mainThread.m_AllSamples)
            {
                if (ChcekSearchCondition(sample))
                {
                    ColumnData data;
                    data.sample     = sample;
                    data.frameIndex = frameData.frameIndex;
                    hitInThisFrame.Add(data);
                }
            }

            foreach (var hit in hitInThisFrame)
            {
                switch (this.sampleCondition)
                {
                case ESampleCondition.Always:
                    this.columnList.Add(hit);
                    break;

                case ESampleCondition.ChildOnly:
                    if (!IsChildExists(hit, hitInThisFrame))
                    {
                        this.columnList.Add(hit);
                    }
                    break;

                case ESampleCondition.ParentOnly:
                    if (!IsParentExists(hit, hitInThisFrame))
                    {
                        this.columnList.Add(hit);
                    }
                    break;
                }
            }
        }
        public override void CollectData(ProfilerFrameData frameData)
        {
            if (frameData == null)
            {
                return;
            }


            HashSet <ProfilerSample> doneList = new HashSet <ProfilerSample>();

            foreach (var thread in frameData.m_ThreadData)
            {
                if (thread.m_AllSamples == null)
                {
                    continue;
                }
                foreach (var sample in thread.m_AllSamples)
                {
                    if (!sample.sampleName.StartsWith("File."))
                    {
                        continue;
                    }

                    if (sample.sampleName == "File.Open")
                    {
                        AddFileOpenCloseData(frameData.frameIndex, thread, sample);
                    }
                    else if (sample.sampleName == "File.Read")
                    {
                        AddFileReadData(frameData.frameIndex, thread, sample);
                    }
                    else if (sample.sampleName == "File.Seek")
                    {
                        AddFileSeekData(frameData.frameIndex, thread, sample);
                    }
                    else if (sample.sampleName == "File.Close")
                    {
                        AddFileOpenCloseData(frameData.frameIndex, thread, sample);
                    }
                }
            }
        }
Ejemplo n.º 17
0
        public override void CollectData(ProfilerFrameData frameData)
        {
            // Categoryのセットアップ
            SetupCategories();
            FrameByCategory frameByCategory = new FrameByCategory();

            frameByCategory.frameIdx = frameData.frameIndex;
            // 特別枠で frameDataのCPU時間を追加
            // 同一フレーム内に同じスレッド名が複数できるので…
            Dictionary <string, int> threadNameCounter = new Dictionary <string, int>(8);

            foreach (var thread in frameData.m_ThreadData)
            {
                if (thread.IsMainThread)
                {
                    CollectThread(thread, frameByCategory);
                }
            }
            this.frames.Add(frameByCategory);
        }
Ejemplo n.º 18
0
        private void SetupCategories(ProfilerFrameData frameData)
        {
            if (this.categoryDictionary != null)
            {
                return;
            }
            this.categoriesStr      = new List <string>();
            this.categoryDictionary = new Dictionary <int, string>();
            var categories = ProtocolData.GetCategories(frameData, this.unityVersion);

            foreach (var item in categories)
            {
                string name = item.Value.name;
                int    idx  = (int)item.Value.categoryId;
                if (!categoryDictionary.ContainsKey(idx))
                {
                    categoriesStr.Add(name);
                    categoryDictionary.Add(idx, name);
                }
            }
        }
Ejemplo n.º 19
0
        public override void CollectData(ProfilerFrameData frameData)
        {
            if (frameData == null)
            {
                return;
            }
            var jitInfos = frameData.m_jitInfos;

            if (jitInfos == null)
            {
                return;
            }
            foreach (var jitInfo in jitInfos)
            {
                if (jitInfo == null)
                {
                    continue;
                }
                if (!jitInfoDict.ContainsKey(jitInfo.codeAddr))
                {
                    jitInfoDict.Add(jitInfo.codeAddr, jitInfo);
                }
            }
        }
 public abstract void CollectData(ProfilerFrameData frameData);