public void WithCustomProjectionAndSmallResultSet() { var linqHelper = CreateLinqPerformanceTestHelper(() => from c in QueryFactory.CreateLinqQuery <Company>() select new { c.ID, c.Name }); var message = "Custom projection query with small (200) result set "; PerformanceTestHelper.TimeAndOutput(10000, message + "(QM)", linqHelper.GenerateQueryModel); PerformanceTestHelper.TimeAndOutput(10000, message + "(QM+SQL)", linqHelper.GenerateQueryModelAndSQL); PerformanceTestHelper.TimeAndOutput(10000, message + "(QM+SQL+IQ)", linqHelper.GenerateQueryModelAndSQLAndIQuery); //PerformanceTestHelper.TimeAndOutput (2000, message + "(QM+SQL+IQ+Execute)", linqHelper.GenerateAndExecuteQueryDBOnly); PerformanceTestHelper.TimeAndOutput(1000, message + "(QM+SQL+IQ+Execute+re-store)", linqHelper.GenerateAndExecuteQuery); }
public void WithLargeResultSet() { Func <IQueryable <Person> > queryGenerator = () => (from p in QueryFactory.CreateLinqQuery <Person> () select p); var linqHelper = new LinqPerformanceTestHelper <Person> (queryGenerator); var message = "Simple query with large (2000) result set "; PerformanceTestHelper.TimeAndOutput(10000, message + "(QM)", linqHelper.GenerateQueryModel); PerformanceTestHelper.TimeAndOutput(10000, message + "(QM+SQL)", linqHelper.GenerateQueryModelAndSQL); PerformanceTestHelper.TimeAndOutput(10000, message + "(QM+SQL+IQ)", linqHelper.GenerateQueryModelAndSQLAndIQuery); PerformanceTestHelper.TimeAndOutput(100, message + "(QM+SQL+IQ+Execute)", linqHelper.GenerateAndExecuteQueryDBOnly); PerformanceTestHelper.TimeAndOutput(100, message + "(QM+SQL+IQ+Execute+re-store)", linqHelper.GenerateAndExecuteQuery); }
public void WithComplexQuery_GroupBy() { var query = (from p in QueryFactory.CreateLinqQuery <Person> () group p by p.FirstName into gp from grp in gp select grp); Func <IQueryable <Person> > queryGenerator = () => (query); var linqHelper = new LinqPerformanceTestHelper <Person> (queryGenerator); var message = "Complex query with group by "; PerformanceTestHelper.TimeAndOutput(10000, message + "(QM)", linqHelper.GenerateQueryModel); PerformanceTestHelper.TimeAndOutput(10000, message + "(QM+SQL)", linqHelper.GenerateQueryModelAndSQL); PerformanceTestHelper.TimeAndOutput(10000, message + "(QM+SQL+IQ)", linqHelper.GenerateQueryModelAndSQLAndIQuery); PerformanceTestHelper.TimeAndOutput(1000, message + "(QM+SQL+IQ+Execute)", linqHelper.GenerateAndExecuteQueryDBOnly); PerformanceTestHelper.TimeAndOutput(500, message + "(QM+SQL+IQ+Execute+re-store)", linqHelper.GenerateAndExecuteQuery); }
public void WithComplexQuery_SubqueriesInSecondFromClauseAndMultiplyOrderByClauses() { var query = (from c in QueryFactory.CreateLinqQuery <Client> () from p in (from sp in QueryFactory.CreateLinqQuery <Person>() where sp.Client == c orderby sp.FirstName orderby sp.LastName select sp) from co in (from sco in QueryFactory.CreateLinqQuery <Company>() where sco.Client == c orderby sco.Name select sco) select p).Distinct(); Func <IQueryable <Person> > queryGenerator = () => (query); var linqHelper = new LinqPerformanceTestHelper <Person> ( queryGenerator); var message = "Complex query with subqueries in second from clause and multiply order by clauses "; PerformanceTestHelper.TimeAndOutput(10000, message + "(QM)", linqHelper.GenerateQueryModel); PerformanceTestHelper.TimeAndOutput(10000, message + "(QM+SQL)", linqHelper.GenerateQueryModelAndSQL); PerformanceTestHelper.TimeAndOutput(10000, message + "(QM+SQL+IQ)", linqHelper.GenerateQueryModelAndSQLAndIQuery); PerformanceTestHelper.TimeAndOutput(1000, message + "(QM+SQL+IQ+Execute)", linqHelper.GenerateAndExecuteQueryDBOnly); PerformanceTestHelper.TimeAndOutput(500, message + "(QM+SQL+IQ+Execute+re-store)", linqHelper.GenerateAndExecuteQuery); }
public void WithComplexQuery_Subqueries() { var query = (from p in QueryFactory.CreateLinqQuery <Person> () where (from c in QueryFactory.CreateLinqQuery <Client> () select c).Contains(p.Client) && p.FirstName == (from sp in QueryFactory.CreateLinqQuery <Person> () select sp.FirstName).First() select p).Distinct(); Func <IQueryable <Person> > queryGenerator = () => (query); var linqHelper = new LinqPerformanceTestHelper <Person> ( queryGenerator); var message = "Complex query with subqueries "; PerformanceTestHelper.TimeAndOutput(10000, message + "(QM)", linqHelper.GenerateQueryModel); PerformanceTestHelper.TimeAndOutput(10000, message + "(QM+SQL)", linqHelper.GenerateQueryModelAndSQL); PerformanceTestHelper.TimeAndOutput(10000, message + "(QM+SQL+IQ)", linqHelper.GenerateQueryModelAndSQLAndIQuery); PerformanceTestHelper.TimeAndOutput(1000, message + "(QM+SQL+IQ+Execute)", linqHelper.GenerateAndExecuteQueryDBOnly); PerformanceTestHelper.TimeAndOutput(500, message + "(QM+SQL+IQ+Execute+re-store)", linqHelper.GenerateAndExecuteQuery); }
public void WithComplexQuery_JoinsAndSubquery() { var query = (from c in QueryFactory.CreateLinqQuery <Client> () join p in QueryFactory.CreateLinqQuery <Person> () on c equals p.Client join co in QueryFactory.CreateLinqQuery <Company> () on c equals co.Client where p.FirstName == ((from sp in QueryFactory.CreateLinqQuery <Person> () select sp.FirstName).First()) select co).Distinct(); Func <IQueryable <Company> > queryGenerator = () => (query); var linqHelper = new LinqPerformanceTestHelper <Company> ( queryGenerator); var message = "Complex query with joins and subquery "; PerformanceTestHelper.TimeAndOutput(10000, message + "(QM)", linqHelper.GenerateQueryModel); PerformanceTestHelper.TimeAndOutput(10000, message + "(QM+SQL)", linqHelper.GenerateQueryModelAndSQL); PerformanceTestHelper.TimeAndOutput(10000, message + "(QM+SQL+IQ)", linqHelper.GenerateQueryModelAndSQLAndIQuery); PerformanceTestHelper.TimeAndOutput(1000, message + "(QM+SQL+IQ+Execute)", linqHelper.GenerateAndExecuteQueryDBOnly); PerformanceTestHelper.TimeAndOutput(500, message + "(QM+SQL+IQ+Execute+re-store)", linqHelper.GenerateAndExecuteQuery); }