Я создаю приложение Windows Form в C #, которое читает сотни файлов и создает иерархию объектов.В частности:
DEBUG[14]: Imported 129 system/s, 6450 query/s, 6284293 document/s.
Сумма - это общее количество созданных мной объектов.Кстати, объекты действительно просты, только некоторые свойства типа int / string и строго типизированные списки внутри.
Вопрос : нормально, что мое приложение потребляет около 700 МБ памяти (врежим отладки)?Что я могу сделать, чтобы уменьшить использование памяти?
EDIT : вот почему у меня 6284293 объекта, если вам просто любопытно.Представьте себе поисковик, называемый «система».Система имеет больше запросов внутри нее.
public class System
{
public List<Query> Queries;
}
Каждый объект запроса относится к «теме»;это основной аргумент (например, поиск «италия италии»).В нем есть список найденных документов:
public class Query
{
public Topic Topic; // Maintain only a reference to the topic
public List<RetrievedDocument> RetrievedDocuments;
public System System; // Maintain only a reference to the system
}
Каждый извлеченный документ имеет оценку и звание и имеет ссылку на документ темы:
public class RetrievedDocument
{
public string Id;
public int Rank;
public double Score;
public Document Document;
}
Каждая тема имеет коллекциюдокументов внутри, которые могут быть релевантными или не релевантными, и ссылку на родительскую тему:
public class Topic
{
public int Id;
public List<Document> Documents;
public List<Document> RelevantDocuments
{
get {return Documents.Where(d => d.IsRelevant());}
}
}
public class Document
{
public string Id;
public bool IsRelevant;
public Topic Topic; // Maintain only a reference to the topic
}
Существует 129 систем, 50 основных тем (129 * 50 = 6450 объектов запроса), каждый запрос имеетразличное количество найденных документов, всего 6284293.Мне нужна эта иерархия для выполнения некоторых вычислений (средняя точность, легкость темы, средняя точность системы, релевантность).Вот как работает TREC ...