2011-09-01 3 views
2

DataLayer GetCompany에 정적 메서드가 있습니다. 나는 재산과 비교 될 회사 객체가 필요하기 때문에 그것을 만들었습니다. 문제는 다음 코드에 대한 것입니다. 다른 객체를 만들고 반환 된 Company 객체를이 객체에 할당해야합니다.성능 질문 : Entity Framework

성능에 따라 가장 좋은 방법은 다음 중 하나입니다.

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(); 
      } 
     } 
    } 
} 

나는 여러 가지 조건을 가지고 있으므로 몇 가지를 언급하고 있습니다. 어떻게하면 최적화 할 수 있는지 알려주고 있습니다.

+0

성능보다 심각한 문제가 있습니다. 성능을 먼저 측정하고 병목 현상이 어디인지 확인하십시오. – Eranga

답변

1

이 경우는 premature optimization처럼 들립니다. GetCompany 메서드가 자주 호출되지 않으면 걱정할 것이 없습니다.

그러나 목록에서 Property.GetCompany 호출이 comapny 정보를 검색하기 위해 데이터베이스로 전달 될 수 있으므로 사용자 요청마다이 메서드를 여러 번 호출하는 경우 캐시 할 수 있습니다. 이 속성에 액세스하는 코드의 반환 값

또 다른 문제는 SetPersonalNonCOI81Inputs에 대한 호출이 정적 GetCompany 메서드에서 호출되기 때문에 일부 전역 상태 값을 수정하는 것일 수 있다는 것입니다. 공유 상태 값을 동시에 수정할 수 있으므로 다중 스레드 환경 (웹 응용 프로그램이라고 가정)에서 문제가 발생할 수 있습니다. 따라서 SetPersonalNonCOI81Inputs 메서드를 제거하고 새 개체를 반환하기를 원할 수 있습니다.

+0

SetNONCOI81 ...은 별도의 레이어 방법이며 아무 것도 수행하지 않아야합니다. 하지만 여기에있는 것은 유효한 조건을 만족시키기 위해 회사 유형이 필요합니다. 그 이유는 내가 회사의 유형을 확인하는 방법을 만들었습니다 정적 메서드는 아무 것도 아무것도 수정하지 않고있다. –

+0

그럴 경우 걱정할 것이 없습니다. 이 코드에서 평가하는 조건의 성능 영향은 미미합니다. –

+0

@ 브렛 도움에 감사드립니다. –