gpt4 book ai didi

azure - 在 Azure 上使用 `S.D.Stopwatch` 时间变慢

转载 作者:行者123 更新时间:2023-12-03 06:03:37 29 4
gpt4 key购买 nike

我刚刚运行了一些代码,报告其在 Azure 网站实例上的性能;结果似乎有点不对劲。我重新运行该操作,确实看起来一致:System.Diagnostics.Stopwatch 看到实际花费时间超过 的操作的执行时间为 12 秒分钟(至少3分16秒)。

Debug.WriteLine("Loading dataset in database ...");
var stopwatch = new Stopwatch();
stopwatch.Start();
ProcessDataset(CurrentDataSource.Database.Connection as SqlConnection, parser);
stopwatch.Stop();
Debug.WriteLine("Dataset loaded in database ({0}s)", stopwatch.Elapsed.Seconds);
return (short)stopwatch.Elapsed.Seconds;

此过程在 WCF 数据服务“操作”的上下文中运行,并在 SQL 数据库中播种测试数据(这不是生产代码)。具体来说,它:

  1. 打开与 Azure SQL 数据库的连接,
  2. 禁用空约束,
  3. 使用 System.Data.SqlClient.SqlBulkCopy 锁定空表并使用缓冲流加载它,该缓冲流通过文件系统从 Azure Blob 存储检索数据集 (2.4MB),将其解压缩 (GZip) ,膨胀 4.9MB)并解析它(CSV,349996 条记录,使用 TextFieldParser 使用自定义 IDataReader 进行解析),
  4. 更新同一表的列以设置公共(public)值,
  5. 重新启用 null 约束。

不多也不少;没有什么特别密集的事情发生,我认为操作主要是网络绑定(bind)的。

知道为什么时间变慢了吗?

注释:

  • 有趣的是,批量插入和更新命令的超时都必须增加(设置为五分钟)。我看到默认是30秒,比报道的12秒多了;因此,我得出的结论是 SqlClient 测量时间的方式不同。
  • 来自本地执行的报告似乎完全正确,尽管它始终更快(使用 LocalDB 为 4-6 秒),因此可能只是效果并不明显。

最佳答案

您使用 stopwatch.Elapsed.Seconds 来获取总时间,但这是错误的。 Elapsed.Seconds 是 TimeSpan 结构表示的时间间隔的秒部分。请尝试改用 stopwatch.Elapsed.TotalSeconds。

关于azure - 在 Azure 上使用 `S.D.Stopwatch` 时间变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20468676/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com