コード例 #1
0
        private bool WriteFrame(string fileName, FrameArchiveSource source)
        {
            var excel = new Application();

            //excel.Visible = true;
            excel.DisplayAlerts = false;
            var workbooks = excel.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);

            var frames = source.Frames;

            for (var i = 0; i < frames.Count; i++)
            {
                var frame     = frames[i];
                var worksheet = (Worksheet)workbooks.Worksheets[i + 1];
                worksheet.Name = frame.Description;

                if (frame is EventFrame)
                {
                    var eventFrame = frame as EventFrame;
                    if (0 != eventFrame.Root.Children.Count())
                    {
                        var eventNode = eventFrame.Root.Children[0];
                        var column    = 1;
                        worksheet.Cells[FrameTreeType.Function][column]     = "FUNCTION";
                        worksheet.Cells[FrameTreeType.SelfDuration][column] = "SELFDURATION(MS)";
                        worksheet.Cells[FrameTreeType.SelfPercent][column]  = "SELFPERCENT%";
                        worksheet.Cells[FrameTreeType.Total][column]        = "TOTAL(MS)";
                        worksheet.Cells[FrameTreeType.TotalPercent][column] = "TOTALPERCENT%";
                        worksheet.Cells[FrameTreeType.Path][column]         = "PATH";
                        worksheet.Cells[FrameTreeType.Tags][column]         = "TAGS";

                        WriteEventNode(worksheet, ref column, eventNode);
                    }
                }

                if (i + 1 != frames.Count)
                {
                    AddSheet(workbooks, "NextFrame");
                }
            }

            workbooks.SaveCopyAs(fileName);
            workbooks.Close();
            excel.Quit();

            return(true);
        }
コード例 #2
0
        public bool WriteFrame(string fileName, FrameArchiveSource source)
        {
            var    fileStream = new FileStream(fileName, FileMode.Create);
            Stream zipStream  = null;
            Stream stream     = fileStream;

            Capture.OptickHeader header = new Capture.OptickHeader();
            header.Write(fileStream);
            if (header.IsZip)
            {
                zipStream = new GZipStream(fileStream, CompressionLevel.Fastest);
                stream    = zipStream;
            }

            FrameGroup currentGroup = null;

            foreach (Frame frame in source.Frames)
            {
                if (frame is EventFrame)
                {
                    EventFrame eventFrame = frame as EventFrame;
                    if (eventFrame.Group != currentGroup && currentGroup != null)
                    {
                        currentGroup.Responses.ForEach(response => response.Serialize(stream));
                    }
                    currentGroup = eventFrame.Group;
                }
                else if (frame is SamplingFrame)
                {
                    if (currentGroup != null)
                    {
                        currentGroup.Responses.ForEach(response => response.Serialize(stream));
                        currentGroup = null;
                    }

                    var sampleingFrame = frame as SamplingFrame;
                    sampleingFrame.Response.Serialize(stream);
                }
            }

            currentGroup?.Responses.ForEach(response => response.Serialize(stream));

            stream.Close();

            return(true);
        }
コード例 #3
0
        private bool WriteFrame(string fileName, FrameArchiveSource source)
        {
            var frames = source.Frames;
            var writer = new StreamWriter(fileName, false, Encoding.UTF8);

            foreach (var frame in frames)
            {
                if (frame is EventFrame)
                {
                    var eventFrame = frame as EventFrame;
                    if (0 != eventFrame.Root.Children.Count())
                    {
                        var eventNode = eventFrame.Root.Children[0];
                        writer.WriteLine(@"FUNCTION,SELFDURATION(MS),SELFPERCENT,TOTAL(MS),TOTALPERCENT%,PATH,TAGS");
                        WriteEventNode(writer, eventNode);
                    }
                }
            }

            return(true);
        }