Tôi muốn đảm bảo rằng ứng dụng web của tôi hoạt động hiệu quả và sẽ không gây ra bất kỳ vấn đề hiệu suất nào. Khi tôi tìm kiếm, tôi thấy rằng một trong những vấn đề phổ biến nhất liên quan đến vấn đề hiệu suất là vấn đề "vòng lặp vô hạn".Làm cách nào để phát hiện và tránh các vòng lặp vô hạn?
Tôi muốn hỏi:
Tôi nên bắt đầu kiểm tra xem mã của mình không bao giờ gây ra vòng lặp vô hạn?
Có bài viết, lời khuyên, chỉ dẫn, ví dụ nào không? Tôi sẽ biết ơn.
ví dụ:
Có thể mã này gây ra vòng lặp vô hạn?
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"));
}
Cảm ơn trước
Có thể đặt một số giới hạn trên lớn, tức là 'int ReadCount = 100000; while (xrdr.Read() && ReadCount--> 0) ' –
Điều này rất có thể không phải là những gì bạn đang tìm kiếm, nhưng vấn đề chung là tìm hiểu xem một chương trình có tham gia vòng lặp vô hạn hay kết thúc hay không ([" tạm dừng sự cố " ] (http://en.wikipedia.org/wiki/Halting_problem)) là không thể giải quyết được. – svick
Mã chính xác là gì? Bạn sẽ xuất kết quả này cho người dùng hay đây có phải là thực thi đằng sau hậu trường không?Nếu bạn xuất kết quả cho người dùng, bạn có thể nhận được 10 -> hiển thị kết quả đầu tiên -> sau đó chuyển hướng từ trang này sang trang khác mỗi lần chỉ lặp lại 10 tệp tiếp theo. –