Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 7
  • 121

Czy jest jakaś różnica w następujących zapytaniach LINQ? Chodzi mi o kwestie: wydajności, podejścia do użycia join (czy to jest poprawne i wskazane):

List<int> numbers = new List(int) {1,2,3,4,5};
List<Order> orders = GetOrders();  // metoda zwracająca listę zamówień

//1
var waOrders1 = from n in numbers
from o in o.Orders
where o.Id == n
select new { n, o.Details, o.OrderDate };

//2
var waOrders2 = from n in numbers
join o in orders on o.Id equals n
select new { n, o.Details, o.OrderDate };

User_M
  • Zapytał
  • @ User_M | 15.07.2014
    • 15
    • 1
    • 5
Zaloguj się aby zadać pytanie
Pokrewne

Odpowiedź (1)

  • 2

Z moich pomiarów wynika, że szybciej wykona się zapytanie z użyciem join.

W związku z tym, że przy małych zbiorach różnice są niezauważalne posłużyłem się generatorem liczb:

void Main()
{
	var nums1 = Enumerable.Range(1, 900000000);
	var nums2 = Enumerable.Range(1, 900000000);
	
	var watch1 = Stopwatch.StartNew();
	
		var query = from c in nums1
		    join o in nums2 on c equals o
		    select c;

    watch1.Stop();
	var elapsedMs1 = watch1.ElapsedTicks;
	
	
    var watch2 = Stopwatch.StartNew();
    var query2 = from c in nums1
		    from o in nums2
			where c == o
		    select c;

	watch2.Stop();
	var elapsedMs2 = watch2.ElapsedTicks;
	
	Console.WriteLine(elapsedMs1);
	Console.WriteLine(elapsedMs2);
}



Zatem z punktu widzenia wydajności lepiej używać join.

 

  • Odpowiedział
  • @ | 04.08.2014
  • TRENER ALTKOM AKADEMII