我只是进行概念验证,以衡量新Azure Storage Client Library 2.0及其旧版TableServiceQuery的性能改进。
运行结果后,我感到惊讶!而不是Azure SCL 2.0将获得性能提升。与TableServiceQuery相比,它的性能很差。
这是我的代码:
var account = CloudStorageAccount.Parse(ConfigHelper.DataConnectionString);
var tableClient = account.CreateCloudTableClient();
var context = tableClient.GetTableServiceContext();
var table = tableClient.GetTableReference("User");
var sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 100; i++)
{
var query = context.CreateQuery<User>("User");
var temp = (from item in query
where item.PartitionKey == "12345"
select item).First();
temp.ToString();
}
sw.Stop();
Console.WriteLine("TableServiceQuery: " + sw.Elapsed);
sw.Reset();
sw.Start();
for (int i = 0; i < 100; i++)
{
var query = new TableQuery<User>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "12345")).Take(1);
var temp = table.ExecuteQuerySegmented(query, null).First();
temp.ToString();
}
sw.Stop();
Console.WriteLine("TableQuery: " + sw.Elapsed);
结果是
TableServiceQuery: 00:00:13.8179295
TableQuery: 00:00:34.8782858
我尝试过几次,但新的SCL 2.0(TableQuery)总是花费超过两倍的时间。表格&#39;用户&#39;我查询的记录有大约百万条记录。
我的理解是新API应该有重大的性能提升。有人请解释我的代码中遗漏了什么吗?或者我该怎么做才能使新库有更好的性能?
答案 0 :(得分:1)
此问题已在SDK 2.0.6.1中解决
答案 1 :(得分:0)
如果您在Windows Azure角色上运行此测试,请确保在部署时禁用Intellitrace。有关Intellitrace for cloud服务的更多信息,请参阅Debugging a Published Cloud Service with IntelliTrace and Visual Studio文章。