Performance In Practice

Feb 9, 2010 at 4:58 PM
Edited Feb 9, 2010 at 4:59 PM

Greetings. I've been running into performance bottlenecks using Obtics. We have a process that loads a few thousand objects and it ends up being much slower than I would expect. We process our original expression with ExpressionObserver.Compile and then cache that. The ExpressionObserver.Compile doesn't show up in the profiler, it's the execution of the compiled expression that's the problem. Here's a screen shot from the profiler that shows such a region. Any thoughts on how this might be improved? Click on the image to zoom.

Feb 10, 2010 at 10:25 AM


Obtics needs to do a lot of administration to keep track of changeable items. So in case of really large datasets it may not be the best option.

Nevertheless it should perform as well as possible. The carrousel is the element where most time is spent in when working with complex queries. The carrousel itself gives an enormous performance increase. Without it performance would be much worse. Best way to avoid the carrousel is by keeping queries structuraly simple. Avoid the use of 'let' in linq queries. Use immutable values when possible. Try to sort the final result and see if that gives an improvement (this allows the parts of the query before the sort to ignore item order).

If you would have more details about the actual query you are trying to execute I would be very interested.



Feb 10, 2010 at 4:34 PM

The typical expressions are very simple.

t => "Name of Property Referring to " + t.Target.Name
t => "Description for " + t.EffectiveSourcePropertyName

Now I'm wondering about having an optimization path that involves such simply cases as only property access.