Wriju's BLOG

.NET, Cloud and everything

VB.NET 10 : PLINQ

LINQ can be more faster with the availability of multi-core desktops. This can be implemented with minimal impact at the code level with existing code.


Here how it looks like,


Dim arrInt = Enumerable.Range(1, 4000000)


Dim q =


    From n In arrant


    Where (IsPrime(n))


    Select n


In my dual core machine it takes around 2693 millisecond. But with a little tweak you can make it faster


Dim q =


    From n In arrInt.AsParallel()


    Where (IsPrime(n))


    Select n


Now this takes 1527 milliseconds. Clearly something to think about.


Behind the scene


What happens in this case? All the Where / Select becomes Lambda expression like


arrInt.AsParallel().Where(Function(n) IsPrime(n)).Select(Function(n) n)


 


When we were using without AsParallel(), Where/Select were coming from Enumerable class. After we have implemented the AsParallel() it now calls the method from ParallelEnumerable class.


 


ParallelEnumerable class internally implements the new “Task” API.


 


Namoskar!!!