UNPKG

@azure/cosmos

Version:
180 lines (179 loc) 9.74 kB
var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var queryMetrics_exports = {}; __export(queryMetrics_exports, { QueryMetrics: () => QueryMetrics }); module.exports = __toCommonJS(queryMetrics_exports); var import_clientSideMetrics = require("./clientSideMetrics.js"); var import_queryMetricsConstants = __toESM(require("./queryMetricsConstants.js")); var import_queryMetricsUtils = require("./queryMetricsUtils.js"); var import_queryPreparationTime = require("./queryPreparationTime.js"); var import_runtimeExecutionTimes = require("./runtimeExecutionTimes.js"); var import_timeSpan = require("./timeSpan.js"); class QueryMetrics { constructor(retrievedDocumentCount, retrievedDocumentSize, outputDocumentCount, outputDocumentSize, indexHitDocumentCount, totalQueryExecutionTime, queryPreparationTimes, indexLookupTime, documentLoadTime, vmExecutionTime, runtimeExecutionTimes, documentWriteTime, clientSideMetrics) { this.retrievedDocumentCount = retrievedDocumentCount; this.retrievedDocumentSize = retrievedDocumentSize; this.outputDocumentCount = outputDocumentCount; this.outputDocumentSize = outputDocumentSize; this.indexHitDocumentCount = indexHitDocumentCount; this.totalQueryExecutionTime = totalQueryExecutionTime; this.queryPreparationTimes = queryPreparationTimes; this.indexLookupTime = indexLookupTime; this.documentLoadTime = documentLoadTime; this.vmExecutionTime = vmExecutionTime; this.runtimeExecutionTimes = runtimeExecutionTimes; this.documentWriteTime = documentWriteTime; this.clientSideMetrics = clientSideMetrics; } /** * Gets the IndexHitRatio * @hidden */ get indexHitRatio() { return this.retrievedDocumentCount === 0 ? 1 : this.indexHitDocumentCount / this.retrievedDocumentCount; } /** * returns a new QueryMetrics instance that is the addition of this and the arguments. */ add(queryMetricsArray) { let retrievedDocumentCount = 0; let retrievedDocumentSize = 0; let outputDocumentCount = 0; let outputDocumentSize = 0; let indexHitDocumentCount = 0; let totalQueryExecutionTime = import_timeSpan.TimeSpan.zero; const queryPreparationTimesArray = []; let indexLookupTime = import_timeSpan.TimeSpan.zero; let documentLoadTime = import_timeSpan.TimeSpan.zero; let vmExecutionTime = import_timeSpan.TimeSpan.zero; const runtimeExecutionTimesArray = []; let documentWriteTime = import_timeSpan.TimeSpan.zero; const clientSideQueryMetricsArray = []; queryMetricsArray.push(this); for (const queryMetrics of queryMetricsArray) { if (queryMetrics) { retrievedDocumentCount += queryMetrics.retrievedDocumentCount; retrievedDocumentSize += queryMetrics.retrievedDocumentSize; outputDocumentCount += queryMetrics.outputDocumentCount; outputDocumentSize += queryMetrics.outputDocumentSize; indexHitDocumentCount += queryMetrics.indexHitDocumentCount; totalQueryExecutionTime = totalQueryExecutionTime.add(queryMetrics.totalQueryExecutionTime); queryPreparationTimesArray.push(queryMetrics.queryPreparationTimes); indexLookupTime = indexLookupTime.add(queryMetrics.indexLookupTime); documentLoadTime = documentLoadTime.add(queryMetrics.documentLoadTime); vmExecutionTime = vmExecutionTime.add(queryMetrics.vmExecutionTime); runtimeExecutionTimesArray.push(queryMetrics.runtimeExecutionTimes); documentWriteTime = documentWriteTime.add(queryMetrics.documentWriteTime); clientSideQueryMetricsArray.push(queryMetrics.clientSideMetrics); } } return new QueryMetrics( retrievedDocumentCount, retrievedDocumentSize, outputDocumentCount, outputDocumentSize, indexHitDocumentCount, totalQueryExecutionTime, import_queryPreparationTime.QueryPreparationTimes.createFromArray(queryPreparationTimesArray), indexLookupTime, documentLoadTime, vmExecutionTime, import_runtimeExecutionTimes.RuntimeExecutionTimes.createFromArray(runtimeExecutionTimesArray), documentWriteTime, import_clientSideMetrics.ClientSideMetrics.createFromArray(...clientSideQueryMetricsArray) ); } /** * Output the QueryMetrics as a delimited string. * @hidden */ toDelimitedString() { return import_queryMetricsConstants.default.RetrievedDocumentCount + "=" + this.retrievedDocumentCount + ";" + import_queryMetricsConstants.default.RetrievedDocumentSize + "=" + this.retrievedDocumentSize + ";" + import_queryMetricsConstants.default.OutputDocumentCount + "=" + this.outputDocumentCount + ";" + import_queryMetricsConstants.default.OutputDocumentSize + "=" + this.outputDocumentSize + ";" + import_queryMetricsConstants.default.IndexHitRatio + "=" + this.indexHitRatio + ";" + import_queryMetricsConstants.default.TotalQueryExecutionTimeInMs + "=" + this.totalQueryExecutionTime.totalMilliseconds() + ";" + this.queryPreparationTimes.toDelimitedString() + ";" + import_queryMetricsConstants.default.IndexLookupTimeInMs + "=" + this.indexLookupTime.totalMilliseconds() + ";" + import_queryMetricsConstants.default.DocumentLoadTimeInMs + "=" + this.documentLoadTime.totalMilliseconds() + ";" + import_queryMetricsConstants.default.VMExecutionTimeInMs + "=" + this.vmExecutionTime.totalMilliseconds() + ";" + this.runtimeExecutionTimes.toDelimitedString() + ";" + import_queryMetricsConstants.default.DocumentWriteTimeInMs + "=" + this.documentWriteTime.totalMilliseconds(); } static zero = new QueryMetrics( 0, 0, 0, 0, 0, import_timeSpan.TimeSpan.zero, import_queryPreparationTime.QueryPreparationTimes.zero, import_timeSpan.TimeSpan.zero, import_timeSpan.TimeSpan.zero, import_timeSpan.TimeSpan.zero, import_runtimeExecutionTimes.RuntimeExecutionTimes.zero, import_timeSpan.TimeSpan.zero, import_clientSideMetrics.ClientSideMetrics.zero ); /** * Returns a new instance of the QueryMetrics class that is the aggregation of an array of query metrics. */ static createFromArray(queryMetricsArray) { if (!queryMetricsArray) { throw new Error("queryMetricsArray is null or undefined item(s)"); } return QueryMetrics.zero.add(queryMetricsArray); } /** * Returns a new instance of the QueryMetrics class this is deserialized from a delimited string. */ static createFromDelimitedString(delimitedString, clientSideMetrics) { const metrics = (0, import_queryMetricsUtils.parseDelimitedString)(delimitedString); const indexHitRatio = metrics[import_queryMetricsConstants.default.IndexHitRatio] || 0; const retrievedDocumentCount = metrics[import_queryMetricsConstants.default.RetrievedDocumentCount] || 0; const indexHitCount = indexHitRatio * retrievedDocumentCount; const outputDocumentCount = metrics[import_queryMetricsConstants.default.OutputDocumentCount] || 0; const outputDocumentSize = metrics[import_queryMetricsConstants.default.OutputDocumentSize] || 0; const retrievedDocumentSize = metrics[import_queryMetricsConstants.default.RetrievedDocumentSize] || 0; const totalQueryExecutionTime = (0, import_queryMetricsUtils.timeSpanFromMetrics)( metrics, import_queryMetricsConstants.default.TotalQueryExecutionTimeInMs ); return new QueryMetrics( retrievedDocumentCount, retrievedDocumentSize, outputDocumentCount, outputDocumentSize, indexHitCount, totalQueryExecutionTime, import_queryPreparationTime.QueryPreparationTimes.createFromDelimitedString(delimitedString), (0, import_queryMetricsUtils.timeSpanFromMetrics)(metrics, import_queryMetricsConstants.default.IndexLookupTimeInMs), (0, import_queryMetricsUtils.timeSpanFromMetrics)(metrics, import_queryMetricsConstants.default.DocumentLoadTimeInMs), (0, import_queryMetricsUtils.timeSpanFromMetrics)(metrics, import_queryMetricsConstants.default.VMExecutionTimeInMs), import_runtimeExecutionTimes.RuntimeExecutionTimes.createFromDelimitedString(delimitedString), (0, import_queryMetricsUtils.timeSpanFromMetrics)(metrics, import_queryMetricsConstants.default.DocumentWriteTimeInMs), clientSideMetrics || import_clientSideMetrics.ClientSideMetrics.zero ); } } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { QueryMetrics });