예제 #1
0
        public CallNodeModel(FrameDetailViewModel owner, PerfNodeStats node, ProfileThread thread, int nodeKey)
            : this(owner) {
            MergedStats = node;
            NodeKey     = nodeKey;
            InclTime    = thread.TimeMs;
            ExclTime    = thread.TimeMs - thread.GetChildTimeMs();
            Calls       = 1;

            CallRecordIndex = thread.StartIndex;
            LazyLoading     = thread.NodeCount != 0;
        }
예제 #2
0
    public void ProfileData_AddThreadName_AddsThreadAndContainsName()
    {
        var data        = new ProfileData();
        var threadNames = new List <string>()
        {
            "Thread01",
            "Thread02",
            "Thread03",
            "Thread04"
        };

        var threadDict = new Dictionary <string, ProfileThread>();

        for (int i = 0; i < 10; ++i)
        {
            int           expectedIndex = i % threadNames.Count;
            string        threadName    = threadNames[expectedIndex];
            ProfileThread thread;

            if (!threadDict.TryGetValue(threadName, out thread))
            {
                thread = new ProfileThread();
                threadDict.Add(threadName, thread);
            }

            var marker = new ProfileMarker()
            {
                msMarkerTotal = 0.5f,
                depth         = i
            };

            thread.Add(marker);
            data.AddThreadName(threadName, thread);
            Assert.IsTrue(expectedIndex == thread.threadIndex, "Index mismatch at: " + i + " , " + thread.threadIndex);;
        }

        foreach (var curThread in threadDict)
        {
            var curName = data.GetThreadName(curThread.Value);
            Assert.IsTrue(threadNames.Contains(curName));
        }
    }