2010-01-19 7 views
4

LINQ to SQL은 기본적으로 ADO.NET 위에있는 계층이므로 일부 번역이 필요합니다. 이것은 ADO.NET을 직접 사용하는 것이 LINQ보다 빠르다는 것을 의미합니까? 아니면 그 차이가 너무 작아서 부적절한가?LINQ to SQL 대 ADO.NET - 속도가 더 빠릅니까?

+0

여기에 몇 가지 벤치 마크가 있습니다. (http://www.ormbattle.net/) – yojimbo87

답변

23

ADO.NET이 더 빠릅니다. 또한 SQL 쿼리를 최적화 할 수있는 자유를 누릴 수 있습니다 (기술적으로 LINQ to SQL을 스토어드 프로 시저와 함께 사용할 수는 있지만 모든 부분을 놓칠 수 있습니다).

실제로 사실 이라면은 최상의 성능을 위해 최적화해야합니다. 그러면 아무도 OR/M을 사용하지 않는 것이 좋습니다. 성능면에서는 OR/M : s의 고려 사항이 있습니다. 하지만 많은 사이트에서 실제로 코드를 작성하는 것과 비교할 때 오버 헤드의 종류는 같지만 실제로는 의 성능을 위해 최적화 할 필요가 없습니다. 이는 어셈블러가 아니라 .NET에서 프로그래밍 할 수있는 것과 거의 같은 방식입니다. 낮은 수준의 언어.

LINQ to SQL 또는 NHibernate, 또는 다른 OR/M을 사용하는 요점은 (.NET 유추와 마찬가지로) 사용자에게 많은 편의를 제공하고 많은 저장을 할 것입니다 개발 시간을 단축하고 리팩토링과 다른 이후의 변경을 훨씬 간단한 작업으로 만듭니다.

+0

가능한 경우 두 표를줍니다. 유지 관리에 대해 절대 잊지 마십시오. – Paddy

+1

하나의 사소한 세부 사항을 추가하고 싶습니다. db-unaware 개발자가 많이 있습니다. 그들 중 일부는 여전히 SQL을 작성하고 그 중 일부는 정말로 진절머리 나는 SQL을 작성합니다. 일부 OR/Ms (예 : L2S)는 DB를 치기 전에 상당한 양의 쿼리 최적화를 수행하므로 오브젝트 구체화 등에 약간의 오버 헤드가있을 수 있지만 db-unaware devs를 사용하면 거대한 DB 측 성능이 향상 될 수 있습니다 팀 ... JMHO. – KristoferA

5

실행 중 부분적으로 느립니다. 그러나 Linq to SQL은 개발자의 시간을 절약 해 주므로 IMHO가 가장 큰 이점입니다.

친절,

4

기술적으로는, 네 약간의 오버 헤드가 있고, Linq2Sql 때때로 일부 덜 그 최적의 SQL을 생성 할 수 있습니다,하지만 당신은 높은 성능과 높은 처리량 일을하지 않는 한 당신은 아마에 가능성이 그것을 알아 차려라.

제 조언은 요구 사항에 가장 적합한 DA 기술을 선택하고 함께 할 것입니다. Linq2SQL 또는 EF와 같은 장점은 반복적 인 DA 레이어를 작성하는 데 소요되는 개발자 시간이 줄어들고 코드가 줄어들 기 때문에 (이론적으로는 버그가 줄어들고 유지 관리가 줄어들지 만 논쟁의 여지가 있지만). 나중에 성능을 분석하고 병목을 발견하면 특정 검색어를 최적화 할 수 있습니다. 꼭 필요한 경우 큰 병목을 유발하는 매우 중요한 검색어를 일반 ads.net으로 변환 할 수 있습니다

2

사실 LINQ to SQL은 ADO.NET의 최상위 계층입니다. 그러나 결과를 메모리에 유지할 수있는 다른 옵션도 있습니다. 검색 후 즉시 데이터를 처리하려는 의도가있는 경우 성능 향상을 위해 루프 내에서 ADO.NET DataReader를 사용하는 것이 좋습니다. 그러나 데이터에 대한 추가 처리가 필요한 경우 LINQ to SQL Entity 또는 DataTable과 같은 일종의 변수를 사용하여 메모리를 유지해야합니다. 이 두 메모리 변수는 기본적으로 동일한 방법으로 생성됩니다. 이 사실을 감안할 때 각 옵션을 메모리에서 사용할 수있는 속도는 데이터 작업 방법만큼이나 중요하지 않다고 말하고 싶습니다.