Wriju's BLOG

.NET, Cloud and everything


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.