0

我知道 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.

任何建议,将不胜感激。

4

1 回答 1

0

据我所知,我们无法直接获取调用 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();
于 2017-04-21T08:11:28.530 回答