在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;    
        }  
    }

在Azure上迭代数据表的速度逐渐变慢

嗯,正如所怀疑的,它与逻辑没有任何关系。由于某些或其他原因,exe在Windows 8兼容模式下运行。去掉那个标志就解决了问题。