在Azure上迭代数据表的速度逐渐变慢
本文关键字:速度 渐变 数据表 Azure 迭代 | 更新日期: 2023-09-27 18:17:11
我遇到了一个c#问题,我们在数据表中加载了大约10,000行,然后循环通过它们来更改一些数据。
问题是它在循环中变得越来越慢。每次迭代都要慢几毫秒,直到慢到1毫秒。
但在你要求代码或给我现有的代码工作之前,这里有一个有趣的事情:它只发生在Azure上。并不是所有的Azure服务器,只有1个或2个。完全相同的配置、db和数据在不同的服务器上不会有相同的问题。
有人知道Azure或Win 2012 R2中的某些东西可能会导致这种行为吗?
编辑:非常有趣的是,这个问题似乎与循环中的内容无关。这个循环现在只是将快照打印到屏幕上。前100行花费6秒。第40组用了40秒,速度变慢了。下面是简化后的代码: var format = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
var fs = new FileStream(path, FileMode.Open);
var ds = format.Deserialize(fs) as DataSet;
fs.Close();
System.Data.DataTable table = ds.tables[0];
table.Columns.Add("TEMP", typeof(string));
DateTime lastSnap = DateTime.Now;
for (int i = 0; i < table.Rows.Count; i++)
{
if (i % 100 == 0)
{
PrintToScreen((DateTime.Now - lastSnap).Seconds);
lastSnap = DateTime.Now;
}
}
嗯,正如所怀疑的,它与逻辑没有任何关系。由于某些或其他原因,exe在Windows 8兼容模式下运行。去掉那个标志就解决了问题。