繁体   English   中英

Visual C#while循环中的性能非常差

[英]Visual C# very poor performance in while loop

我在使用C#中的while循环时遇到了一些麻烦。 这种情况让我们说每周一次。 我正在循环一个SQL Server数据阅读器,我读简单的字符串,双打等...我不明白为什么这种情况偶尔会发生。 如果我的代码出现问题,那么它的性能应该总是很差。

更具体地说,当发生这种情况时,当我设置断点时,线程会在3或4秒后中断。 而最奇怪的是,如果我按下F5或者如果我“循序渐进”循环,则需要的时间更少!

这真的很奇怪,它让我发疯。

我想知道是否有人遇到过这种奇怪的交易。

提前感谢您的回复 !

PS: while循环由特定线程(不是主线程)执行。

PS 2:这是我的代码

reader = DBConnect.GetInstance.ExecuteReader(request.ToString(), out connection, timeOut);

while (reader.Read())
{
    SourceInst sourceInst = new SourceInst();
    sourceInst.Load(reader);
    sourceInstList.Add(sourceInst);
}

您的数据库性能可能会有所不同,从而导致您的问题。 SqlDataReader为数据库提供流,不在内存中缓冲。 您在“循环之前执行查询”的假设是不正确的。 流保持打开状态,您通过此循环从数据源通过光标一次读取一条记录。 因此,当您的数据库性能波动时,您的循环性能也会发生波动。 它不会在循环之前将所有记录加载并缓冲到内存中 - 如果您愿意,可以执行此操作,但我不建议在内存使用方面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM