200 likes | 460 Views
LINQ & PLINQ. (Parallel) Language Integrated Query. Agenda. Introduction to LINQ basics Overview of advanced capabilities Demo the Basics PLINQ intro Demo of PLINQ. Introduction. LINQ IS... A programming model that Introduces queries as a “first class” concept into .NET More leg room!
E N D
LINQ & PLINQ (Parallel) Language Integrated Query
Agenda • Introduction to LINQ basics • Overview of advanced capabilities • Demo the Basics • PLINQ intro • Demo of PLINQ
Introduction • LINQ IS... • A programming model that • Introduces queries as a “first class” concept into .NET • More leg room! • Is an abstraction level for data • Don’t you just love abstraction, it’s great! • Is another tool for embedding SQL queries into code • “This code was written by a tool” – not that kind of tool! • Allows for uniform manipulation of any data type • Consistently producing consistent consistency!
LINQ Implementations • LINQ to Objects • Code (Reflection), Filesin FileSystem • LINQ to ADO.NET • LINQ to SQL • LINQ to DataSet • LINQ to Entities • LINQ to XML • XDocument, XElement, XAttribute, XNode, etc • In System.Xml.Linq.Document
Exception Handling • Calling methods where failure is possible • Make use of a ‘let’
Built In Operators • Query • Where • Projection • Select • SelectMany • Ordering • OrderBy • OrderByDescending • ThenBy • ThenByDescending • Reverse • Grouping • GroupBy • Aggregate • Count, LongCount • Sum, Average • Aggregate • Min, Max • Set • Distinct • Union, Intersect, Except • Join • Join, GroupJoin • Generation • Range, Repeat, Empty • Quantifiers • Any, All, Contains • Partitioning • Take, TakeWhile • Skip, SkipWhile • Element Operators • First, FirstOrDefault • Last, LastOrDefault • Single, SingleOrDefault • ElemenentAt, ElementAtOrDefatult • DefaultIfEmpty • Other • Concat • SequenceEqual
Extension Methods • Custom Operators • New Name • Or Override Existing Operators (potentially bad practice) • Specialise Existing – For a given type
LINQ DEMO Basics in VS2010
Advanced LINQ • Recursive Lambda Expressions • Through the use of Fix fixed-point generator • Expression Trees • MSDN Blogs: Mads Torgersen - Recursive Lambda Expressions • Visitor Pattern using LINQ • MSDN Blogs: Jomo Fisher – Dealing with LINQs immutable expression trees
PLINQ Background • Part of managed concurrency library in the .NET Framework • Simplify concurrent processing • Makes use of the Task Parallel Library (TPL) • TPL in turn uses • Parallel.For • Parallel.ForEach • Parallel.Invoke
Operating In Parallel • Partitioning • Based on computation and data type • Range (Arrays, Lists) – Index into structure, equal split • Not the most ideal for load balancing • Striped • Chunks of input • Chunk level load balancing • Hash • Execution • On available cores • Merge Results • Initial thread picks up results (consumer thread) • ForAll, Async (pipelining), Sync (stop-and-go) • PLINQ takes care of threading events, signalling, concurrency, locking, etc.
PLINQ DEMO Speed up of processing using multiple cores
Demo • Projections • Extension Methods • Parallel Performance • LINQ to XML • LINQ to SQL Entities
Thank You Questions? More info on my blog; links, “refined wording”: http://NickJosevski.com