EF 5 벤치 마크

ado.net c# dapper entity-framework ibatis

문제

Dapper 커뮤니티에서 만든 성능 테스트 를 따르고 있습니다.

현재, 나는 10000 번 테스트를 실행 한 후에 다음을 얻는다 :

  • EF 5 = 21595 ms
  • ADO.NET = 52183 ms
  • 더퍼 = 52499 밀리 초
  • iBatis = 83138 ms

EF가 더 빠른 이유를 이해하는 데 도움이되는 것이 필요합니다. 나는 무엇을 잘못 했는가?

사용중인 코드는 Github에 있습니다.

감사!!!

전문가 답변

첫째로, EF는 확실히 빨라졌습니다 : 그들은 많은 시간을 투자하여 성능을 향상 시켰습니다. 대부분의 측정에 의해 여전히 눈에 띄는 오버 헤드가 있습니다. 고려하십시오 : EF는 ADO.NET 위에 있습니다. EF가 ADO.NET보다 훨씬 빠른 결과를보고한다면 (그리고 나는 이미이 문제를 의심하고 있다고 생각합니다.) 당신이 측정하고 있다고 생각 하는 것을 측정하지 않습니다.

나는 여기서 중요한 문제는 동일한 데이터 컨텍스트에 모든 작업을 수행하는 것입니다 생각한다. 즉, 이제는 ID 관리자와 캐시를 강조하는 중입니다. 오라클 등을 사용하기 때문에 코드를 직접 실행할 수는 없지만 수행되는 실제 쿼리를 보는 것은 흥미로울 것입니다. 실제 사용에서 각 데이터 컨텍스트는 유한 단위 작업 단위 (unit-work) 수명을가집니다. 동일한 데이터 컨텍스트에서 10,000 개의 작업을 실행하는 것은 매우 드뭅니다. 보다 전형적으로 소수의 운영이 될 것입니다.

그러나 관련이 없습니다 : 나는 DAO가 원시 ADO.NET 성능의 0.6 % 이내에 있음을 보여주는 귀하의 결과에 매우 만족합니다. 이것은 기본적으로 정확히 우리가 dapper를 사용하여 수행 한 작업이었습니다. 원시 ADO.NET의 전체 성능 이었지만 단순히 코딩 문제를 해결할 수있었습니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow