This benchmark report looks at the data layer improvements in 4.1 by comparing query counts in 4.1 to 4.0.3. Not only has the data layer improved but there’s been significant improvements in the consumption of the data layer API made by many of the 4.1 pages and controls.
The stats below are represented as a percentage of the total calls of 4.0.3 where the number of queries in 4.0.3 are 100% and the number of queries in 4.1 are a percentage in relation to this. These results are based on the procedures listed at the bottom of this post and on averages run over 3 separate trials.
|Expand all Content nodes||100%||23%|
|Edit Home node||100%||49%|
|Publishing Home node||100%||55%|
|Edit About Umbraco node||100%||49%|
|Go to Settings App||100%||100%|
|Expand Document types tree||100%||100%|
|Edit Home document type||100%||61%|
|Save Home document type||100%||67%|
|Go to Media app||100%||50%|
|Create new folder labeled ‘Test’||100%||88%|
|Create new image under new ‘Test’ folder labeled ‘test1’||100%||64%|
|Upload new image file to ‘test1’ and save the node||100%||49%|
|Go to Content app (and in the case of 4.0.3, expand the tree and select the About Umbraco node since in 4.1 this will already be selected and loaded)||100%||41%|
|Edit Home node||100%||43%|
|Add ‘test1’ image to the ‘Text’ WYSIWYG property with the image picker and Publish node||100%||49%|
|Average of averages above||60%|
|Complete run through of the above steps||100%||66%|
So based on averages, Umbraco 4.1 is looking to have around 40% less queries made than 4.0.3!!! Thats HUGE!
The following steps were taken on each trial of the above steps:
- New instances of both 4.0.3 and 4.1
- Install CWS package on both instances
- Log out of both instances
- Bump web.config for both instances (clear out all data cache)
- Use SQL Profiler to determine query counts for each step listed above
Also, SQL debugging has been added to 4.1 for MS SQL instances. If you compile the source in Debug mode you can get the SQL command output by adding a trace listener to your web.config. Underneath the configuration node you can add this xml block:
<system.diagnostics> <trace autoflush="true"> <listeners> <add name="SqlListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="trace.log" /> </listeners> </trace> </system.diagnostics>
This will create a trace.log file in the root of your web app SQL debugging.