Получить скорость загрузки при вызове ExecuteQuerySegmented

Я знаю, что ExecuteQuerySegmented выполняет запрос к хранилищу таблиц Azure. Я хотел бы знать, как можно вывести скорость загрузки при вызове ExecuteQuerySegmented? Что-то вроде:

    var queryResult = table.ExecuteQuerySegmented(new TableQuery<TModel>(), token); 

//a decimal or double value below this line to get the download speed after the call to ExecuteQuerySegmented is executed.

Мы ценим любые предложения.

1 ответ

Решение

Насколько я знаю, мы не могли напрямую получить скорость загрузки ExecuteQuerySegmented.

Вот обходной путь, мы могли бы получить среднюю скорость загрузки ExecuteQuerySegmented.

Мы могли бы использовать класс "System.Diagnostics.Stopwatch", чтобы получить время выполнения метода table.ExecuteQuerySegmented и использовать "System.Text.Encoding.Unicode.GetByteCount(поскольку ответ хранилища Azure использует формат json для генерации результата) для получить размер результата "table.ExecuteQuerySegmented".

Наконец, мы могли рассчитать скорость, используя байт / секунду.

Более подробно, вы можете обратиться к ниже кодов:

        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
             "yourstorageaccount");

        // Create the table client.
        CloudTableClient tableClient = storageAccount.CreateCloudTableClient();

        // Retrieve a reference to the table.
        CloudTable table = tableClient.GetTableReference("tablename");


        string filter = TableQuery.GenerateFilterCondition(
    "PartitionKey", QueryComparisons.Equal, "Aut");

        TableContinuationToken continuationToken = null;
        TableQuery<BookTest3> query = new TableQuery<BookTest3>().Where(filter);

        var watch = System.Diagnostics.Stopwatch.StartNew();
        var queryResult = table.ExecuteQuerySegmented(query, continuationToken).Results;
        watch.Stop();
        //get the execute time
        float seconds = watch.ElapsedMilliseconds/ 1000;
       //Serialize the object
       string s = JsonConvert.SerializeObject(queryResult);
       //get bytes
        float re =   System.Text.Encoding.Unicode.GetByteCount(s)/1000;
        Console.WriteLine(re/seconds);
        Console.Read();
Другие вопросы по тегам