public void WriteQueryMetrics(QueryMetrics queryMetrics) { this.WriteBeforeQueryMetrics(); // Top Level Properties this.WriteRetrievedDocumentCount(queryMetrics.RetrievedDocumentCount); this.WriteRetrievedDocumentSize(queryMetrics.RetrievedDocumentSize); this.WriteOutputDocumentCount(queryMetrics.OutputDocumentCount); this.WriteOutputDocumentSize(queryMetrics.OutputDocumentSize); this.WriteIndexHitRatio(queryMetrics.IndexHitRatio); this.WriteTotalQueryExecutionTime(queryMetrics.TotalQueryExecutionTime); // QueryPreparationTimes this.WriteQueryPreparationTimes(queryMetrics.QueryPreparationTimes); this.WriteIndexLookupTime(queryMetrics.IndexLookupTime); this.WriteDocumentLoadTime(queryMetrics.DocumentLoadTime); this.WriteVMExecutionTime(queryMetrics.VMExecutionTime); // RuntimesExecutionTimes this.WriteRuntimesExecutionTimes(queryMetrics.RuntimeExecutionTimes); this.WriteDocumentWriteTime(queryMetrics.DocumentWriteTime); // ClientSideMetrics this.WriteClientSideMetrics(queryMetrics.ClientSideMetrics); this.WriteAfterQueryMetrics(); }
/// <summary> /// Adds all QueryMetrics in a list along with the current instance. /// </summary> /// <param name="queryMetricsList">The list to sum up.</param> /// <returns>A new QueryMetrics instance that is the sum of the current instance and the list.</returns> internal QueryMetrics Add(params QueryMetrics[] queryMetricsList) { List <QueryMetrics> combinedQueryMetricsList = new List <QueryMetrics>(queryMetricsList.Length + 1); combinedQueryMetricsList.Add(this); combinedQueryMetricsList.AddRange(queryMetricsList); return(QueryMetrics.CreateFromIEnumerable(combinedQueryMetricsList)); }
internal static QueryMetrics CreateWithSchedulingMetrics( QueryMetrics queryMetrics, List <Tuple <string, SchedulingTimeSpan> > partitionSchedulingTimeSpans) { return(new QueryMetrics( queryMetrics.RetrievedDocumentCount, queryMetrics.RetrievedDocumentSize, queryMetrics.OutputDocumentCount, queryMetrics.OutputDocumentSize, queryMetrics.IndexHitDocumentCount, queryMetrics.TotalQueryExecutionTime, queryMetrics.QueryPreparationTimes, queryMetrics.IndexLookupTime, queryMetrics.DocumentLoadTime, queryMetrics.VMExecutionTime, queryMetrics.RuntimeExecutionTimes, queryMetrics.DocumentWriteTime, new ClientSideMetrics( queryMetrics.ClientSideMetrics.Retries, queryMetrics.ClientSideMetrics.RequestCharge, queryMetrics.ClientSideMetrics.FetchExecutionRanges, partitionSchedulingTimeSpans))); }
/// <summary> /// Creates a new QueryMetrics from the backend delimited string. /// </summary> /// <param name="delimitedString">The backend delimited string to deserialize from.</param> /// <returns>A new QueryMetrics from the backend delimited string.</returns> internal static QueryMetrics CreateFromDelimitedString(string delimitedString) { return(QueryMetrics.CreateFromDelimitedStringAndClientSideMetrics(delimitedString, new ClientSideMetrics(0, 0, new List <FetchExecutionRange>(), new List <Tuple <string, SchedulingTimeSpan> >()))); }