Property access efficiency

Posts   
 
    
JamesUK
User
Posts: 7
Joined: 25-Oct-2005
# Posted on: 25-Oct-2005 01:44:18   

I am in the process of selecting an OR/M for a new project. So far I have coded up some tests with a rival OR/M product.

LLBLGen Pro now appeals to me because I can control the SQL interactions a bit closer, hook up to an existing schema and use stored procs. However I have one efficiency concern with LLBLGen Pro. The rival OR/M designers claim their property access efficiency is orders of magnitude faster than other OR/M tools because at start-up their tool generates final implementations of the abstract class business entities. This is the type of business class I have to code up for the rival product:


public abstract Customer : TheirORMDataClass
{
                public abstract string Name {get: set;}
}

Ok so the layout is ugly but apparently this virtual property based design allows 100 million property get / set operations per second compared to 3000 per sec using the next best .Net framework technique based on ContextBoundObjects.

How does LLBLGen Pro compare?

Drewes
User
Posts: 67
Joined: 18-Aug-2003
# Posted on: 25-Oct-2005 02:50:04   

I did a search on google and I guess the product you compare llblgen against is dataobjects.net from x-tensive.com. From what I know about this product is that is determines at runtime what database it is running against. With LLBLgen the schema is analyzed before and the classes generated based on the schema information, so as a result there is no overhead at runtime, setting property values etc. will be just as fast and probably faster with llblgen. That, plus the other advantages of llblgen that you mention yourself make your decision on what product to chose an easy one I think.

JamesUK
User
Posts: 7
Joined: 25-Oct-2005
# Posted on: 25-Oct-2005 11:04:48   

Drewes wrote:

I did a search on google and I guess the product you compare llblgen against is dataobjects.net from x-tensive.com.

Yes.

Drewes wrote:

From what I know about this product is that is determines at runtime what database it is running against.

Dataobjects.net takes full control of the schema and if it detects that the schema is behind the latest mapped entity definitions then it regenerates the schema from the entity class definitions.

Drewes wrote:

With LLBLgen the schema is analyzed before and the classes generated based on the schema information, so as a result there is no overhead at runtime, setting property values etc. will be just as fast and probably faster with llblgen. That, plus the other advantages of llblgen that you mention yourself make your decision on what product to chose an easy one I think.

Urmm you answered a different question. Yes it is true that the just in time schema updates and abstract class completions in DataObjects.Net is a performance hurdle in the code, compile, test cycle but my question relates to class property access performance.

Presumably LLBLgen intercepts write access to an entity property so that the entities it is managing in a session can be persisted automatically during some sort of session.Commit() operations? If so what are the performance implications of the LLBLgen interception design?