私のWebアプリケーションがパフォーマンスに優れていることを確認し、パフォーマンス上の問題を起こさないようにします。私が検索したとき、パフォーマンスの問題に関連する最も一般的な問題の1つが「無限ループ」問題であることがわかりました。無限ループを検出して回避するにはどうすればよいですか?
私が聞いてみたい:私は私のコードは無限ループが発生したことがないことを確認するために開始する必要があります
を?
記事、アドバイス、説明、例はありますか?私は感謝するでしょう。
例:
このコードは無限ループを引き起こすことがありますか?事前に
public static IEnumerable<SubjectNode> ReadSubjectNodes(string filePath)
{
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
using (XmlReader xrdr = new XmlTextReader(fs))
while (xrdr.Read())
if (xrdr.NodeType == XmlNodeType.Element && xrdr.LocalName == "subject")
yield return new SubjectNode(xrdr.GetAttribute("id"), xrdr.GetAttribute("name"), xrdr.GetAttribute("short"));
}
おかげ
巨大な上限、つまり 'int ReadCount = 100000; while(xrdr.Read()&ReadCount--> 0) ' –
これはあなたが探しているものではない可能性が高いですが、プログラムが無限ループに入ったのか終了したのかを調べる一般的な問題](http://en.wikipedia.org/wiki/Halting_problem))は解決できません。 – svick
コードは正確に何をしていますか?これをユーザーに出力するのか、これは裏で実行されますか?結果をユーザーに出力している場合は、最初の10個を取得して結果を表示することができます。次に、次の10個のファイルを繰り返し実行するたびに、あるページから別のページに移動するナビゲーションがあります。 –