Ticket #412
(new enhancement)

ORM Performance Issues

Description

After seeing performance issues in real life as well as profiling, we should address to this.

Simple Testcase (akrohn):
Generated around 4000 rows for the projects table of the sample database and was curious what the profiler would say. (used QSqlServer2005Database)
For a Project::LoadAll?() it got me this for a total time of 21.569 ms.

Qcubed ORM is generating a lot of objects when doing eg. a LoadAll?()
This has also proven to hamper performance on other ORMs like Doctrine.

Thought that myself and avoided QType::Cast in GetColumn?(), but this resulted in not so much performance gains as avoiding GetColumn?(). For many types like string or integer GetColumn?() and QType:Cast calls are not really necessary. Instead accessing directly theColumnArray? could be a first step for better performance.

No, of course it doesn't solve cluttering the client with HTML options if a ListBox? is filled with a large query result.

But the suggestion in the third message of issue #42 (the ability to query concrete field values instead of entire rows) does solve the performance problem of InstantiateDbResult?() necessarily creating an active record object for every row retrieved from the database. And in fact a good example of it as a good improvement is using that feature to fill ListBoxes?, as they may only need to retrieve the record identifier and a name, not the full row.
"
this is the linkhttp://www.qcodo.com/issues/view.php/42