Вопрос производительности: Entity Framework - PullRequest
2 голосов
/ 01 сентября 2011

У меня есть статический метод в моем DataLayer GetCompany. Я сделал это потому, что мне нужно, чтобы объект компании сравнивался с собственностью. Вопрос заключается в следующем коде, должен ли я создать другой объект и присвоить ему возвращенный объект компании или просто использовать его в условиях.

Что является лучшим способом по производительности.

if (property != null && property.CompanyNum > 0)
{
    if (property is PersonalDetail &&
        (Property.GetCompany(property.CompanyNum)).
            CompanyType.ToUpper() != "COI")
    {
        if (property.TaxSubTypeId != 19)
        {
            if (property.CompanyNum == 81 && property.TaxSubTypeId == 11)
            {
                // Tax Sub Type of Compressor & Company Name
                // Midcon Compression LLC 
                SetPersonalNonCOI81Inputs();
            }
        }
    }
}

У меня есть много условий ниже, поэтому я только упомяну пару из них, просто дайте мне знать, если я могу оптимизировать это.

1 Ответ

1 голос
/ 01 сентября 2011

Это звучит как случай преждевременной оптимизации . Если ваш метод GetCompany вызывается не очень часто, вам не о чем беспокоиться.

Однако из вашего листинга видно, что вызов Property.GetCompany может отправляться в базу данных для получения информации о компании, поэтому, если вы вызываете этот метод много раз по запросу пользователя, то может иметь смысл кэшировать возвращаемое значение в коде, который обращается к этому свойству.

Другая проблема, с которой вы можете столкнуться, заключается в том, что ваш вызов SetPersonalNonCOI81Inputs, вероятно, изменяет некоторое значение глобального состояния, поскольку оно вызывается из вашего статического метода GetCompany. Это вызовет проблемы в многопоточной среде (при условии, что это веб-приложение), потому что вы можете иметь одновременные изменения значения общего состояния. Таким образом, вы можете удалить метод SetPersonalNonCOI81Inputs и просто вернуть новый объект там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...