Идеи производительности (хеш-набор C # в памяти и слишком медленный)

У меня есть следующий код

private void LoadIntoMemory()
{
    //Init large HashSet
    HashSet<document> hsAllDocuments = new HashSet<document>();

    //Get first rows from database
    List<document> docsList = document.GetAllAboveDocID(0, 500000);

    //Load objects into dictionary
    foreach (document d in docsList)
    {
        hsAllDocuments.Add(d);
    }

    Application["dicAllDocuments"] = hsAllDocuments;
}

private HashSet<document> documentHits(HashSet<document> hsRawHit, HashSet<document> hsAllDocuments, string query, string[] queryArray)
{
    int counter = 0;
    const int maxCount = 1000;

    foreach (document d in hsAllDocuments)
    {
        //Headline
        if (d.Headline.Contains(query))
        {
            if (counter >= maxCount)
                break;
            hsRawHit.Add(d);
            counter++;
        }

        //Description
        if (d.Description.Contains(query))
        {
            if (counter >= maxCount)
                break;
            hsRawHit.Add(d);
            counter++;
        }

        //splitted query word by word
        //string[] queryArray = query.Split(' ');
        if (queryArray.Count() > 1)
        {
            foreach (string q in queryArray)
            {
                if (d.Headline.Contains(q))
                {
                    if (counter >= maxCount)
                        break;
                    hsRawHit.Add(d);
                    counter++;
                }

                //Description
                if (d.Description.Contains(q))
                {
                    if (counter >= maxCount)
                        break;
                    hsRawHit.Add(d);
                    counter++;
                }
            }
        }

    }

    return hsRawHit;
}       

Сначала я загружаю все данные в хэш-набор (через приложение для дальнейшего использования) - работает нормально - все нормально, чтобы быть медленным для того, что я ' m.

Будет работать под управлением платформы 4.0 на C # (невозможно выполнить обновление до нового обновления для 4.0 с помощью асинхронного материала).

Метод documentHits работает довольно медленно в моей текущей настройке - учитывая, что он все в памяти . Что я могу сделать, чтобы ускорить этот метод?

Примеры были бы замечательными - спасибо.

5
задан mch_dk 23 February 2011 в 20:33
поделиться