Tôi có khoảng 100 nghìn mục thư Outlook có khoảng 500-600 ký tự trên mỗi Nội dung. Tôi có một danh sách 580 từ khóa phải tìm kiếm qua từng phần, sau đó nối thêm các từ ở dưới cùng.Tăng hiệu quả Regex
Tôi tin rằng tôi đã tăng hiệu quả của phần lớn chức năng, nhưng vẫn mất rất nhiều thời gian. Ngay cả đối với 100 email, nó mất khoảng 4 giây.
Tôi chạy hai chức năng cho mỗi danh sách từ khóa (290 từ khóa cho mỗi danh sách).
public List<string> Keyword_Search(HtmlNode nSearch)
{
var wordFound = new List<string>();
foreach (string currWord in _keywordList)
{
bool isMatch = Regex.IsMatch(nSearch.InnerHtml, "\\b" + @currWord + "\\b",
RegexOptions.IgnoreCase);
if (isMatch)
{
wordFound.Add(currWord);
}
}
return wordFound;
}
Tôi có thể tăng hiệu quả của chức năng này không?
Điều khác có thể làm chậm nó xuống là tôi sử dụng Gói nhanh nhẹn HTML để điều hướng qua một số nút và kéo ra khỏi phần thân (nSearch.InnerHtml). _keywordList là một mục List và không phải là một mảng.
Đừng đoán, có một hồ sơ về nó – Paolo
Tôi có dotTrace nhưng nó không hoạt động trên Outlook Addins. – cam
Từ kinh nghiệm của tôi gọi vào API COM thường là một nút cổ chai (trong trường hợp của bạn truy xuất các mục 100k) và điều duy nhất bạn có thể làm là cố gắng giảm số lượng các cuộc gọi đó. Nhưng như đã được Paolo nêu rõ, tốt nhất là nên có một trình lược tả trên nó hoặc sử dụng lớp 'StopWatch' nếu trình lược tả của bạn không hỗ trợ các trình bổ sung. –