Hacker News new | ask | show | jobs
by holtalanm 3351 days ago
wow. I havent used C# for at least three years, but that is a really powerful feature.
1 comments

What's even better is that the DLR consists of some pretty tight code. Historically I was using a ConcurrentDictionary containing Funcs compiled using Expression. I've found the DLR is just as fast (for things that you can express with it), with a much lower overhead. I've started using it in dynamic scenarios wherever possible.

Basically, this is going to be about as fast as you can get with the statically-typed underlying runtime.

> I've found the DLR is just as fast... with a much lower overhead

Can you expand on this? I would not have expected that it would be faster than compiled expressions.

The codegen creates a cache of delegates (created using expression trees), but uses a structure more suited to the problem than a simple ConcurrentDictionary.

[1]: http://geekswithblogs.net/simonc/archive/2012/07/20/inside-t...

Ah, faster than the `ConcurrentDictionary`. That makes sense!
Dynamic calls gets compiled at runtime, so there's an initial hit (as there would be with Expr.Compile) but after that ...