2017-04-21 24 views
0

ExecuteQuerySegmentedがAzureテーブルストレージに対してクエリを実行することがわかりました。 ExecuteQuerySegmentedが呼び出されたときに、ダウンロード速度をどのように出力することができますか?次のようなもの: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. 

いずれかの提案があります。

答えて

0

私が知る限り、私たちは直接ExecuteQuerySegmentedのダウンロード速度を取得することはできませんでした。

ここでは、回避策として、ExecuteQuerySegmentedの平均ダウンロード速度を得ることができます。

"System.Diagnostics.Stopwatch"クラスを使用すると、table.ExecuteQuerySegmentedメソッドの実行時間を取得し、 "System.Text.Encoding.Unicode.GetByteCount(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();