コード例 #1
0
        private async Task <QueryExecutionResult> ExecuteQuery(string name, string description, ElasticClient client, Func <ElasticClient, Task <long> > queryFunction)
        {
            _logger.LogInformation($"Begin executing query with  name {name}");

            var result = new QueryExecutionResult {
                Name = name, Description = description
            };

            for (var i = 0; i < _config.Iterations; i++)
            {
                var metrics = new QueryExecutionMetrics {
                    Id = i + 1, Name = name
                };

                var iterationSw = new Stopwatch();

                iterationSw.Start();

                metrics.RecordsFetched = await queryFunction(client);

                iterationSw.Stop();

                metrics.Duration = iterationSw.ElapsedMilliseconds;

                result.Metrics.Add(metrics);
            }

            return(result);
        }
コード例 #2
0
    private static QueryExecutionMetrics ParseExecutionMetrics(RedisResult[] contents)
    {
        var executionMetrics = new QueryExecutionMetrics();

        foreach (var entity in contents)
        {
            var kvp = ((string)entity).Split(':');

            var key = kvp[0];

            switch (key.ToLowerInvariant())
            {
            case "nodes created":
                executionMetrics.NodesCreated = int.Parse(kvp[1].Trim());
                break;

            case "nodes deleted":
                executionMetrics.NodesDeleted = int.Parse(kvp[1].Trim());
                break;

            case "properties set":
                executionMetrics.PropertiesSet = int.Parse(kvp[1].Trim());
                break;

            case "query internal execution time":
                executionMetrics.ExecutionTimeInMilliseconds = ParseCommandExecutionTime(kvp[1]);
                break;

            case "relationships created":
                executionMetrics.RelationshipsCreated = int.Parse(kvp[1].Trim());
                break;

            case "relationships deleted":
                executionMetrics.RelationshipsDeleted = int.Parse(kvp[1].Trim());
                break;

            case "labels added":
                executionMetrics.LabelsCreated = int.Parse(kvp[1].Trim());
                break;

            default:
                break;
            }
        }

        return(executionMetrics);
    }