viagra online pharmacy order cialis super active cheap female viagra
��� 
Handjob porn amateur sexpurchase synthroid freesex dildo videowww porno com porno ru

ASP.NET MVC Performance April 17, 2009

A closer look at the recently released ASP.NET MVC 1.0 preffered web development stack and some of its performance implications. All of the displayed techniques are in use in production at MagCloud.

The talk was first given in Slovene on 15.4.2009 at a local Microsoft developers user group, SLODUG.

Additional notes:

We cannot assume that only implementing database caching will lead to a significant performance gain before optimizing any other aspects of page’s rendering. Here’s a few more metrics for the DUGG application:

  • First run, as in the slides, no optimizations whatsoever: 5.9 requests / second
  • Added: Compiled SQL-LINQ queries: 6.88 requests / second
  • Added: Fully cached SQL-LINQ queries: 7.43 requests / second/
  • Removed: expression links, replaced with route and actions links. Also fixed path to partials with the full path: 112 requests/second

That still leaves room for the treble performance improvement with URL caching and views that render enumerations.

It’s one of the general rules of optimizing software that speedups in one part of the application will have a lot of consequences elsewhere which you can’t really predict. Test, measure, profile, optimize a single hotspot, repeat!

Errata (23.4.2009)

Thanks to Simone Chiaretta’s analysis of my results, he’s nailed it that I forgot to disable the debug mode for benchmarks (oops!). This disables ASP.NET MVC’s internal cache for paths to views, rendering my part of optimization notes to replace paths to views with full paths irrelevant. I’ve re-run all of the benchmarks, removed two slides and added an errata to the end of the slides.

It would be nice if I can be proven wrong on other points as well. :)

22 Comments
Simone April 17th, 2009

Nice breakdown of the performance implementations…
as it was pretty obvious, the biggest gain comes from caching the data tier.

Andrea Balducci April 17th, 2009

Well done Rudi. Any plan to publish the demo code? I would play with the demo app adding client-side rendering and test few other ideas.
Great work!

Petar Repac April 17th, 2009

Gorazd and Rudi, congrats to both for an very interesting and useful presentation.

Regards, Petar

[...] the view using various file-system locations and thus loosing valuable time. Lesson learned from Whiletrue’s ASP.NET MVC presentation at [...]

[...] ASP.NET MVC Best Practices (Part 1) ASP.NET MVC Best Practices (Part 2) jQuery Search box and Asp.net MVC DataAnnotations and ASP.NET MVC ASP.NET MVC Performance [...]

[...] So, all it took me was a couple of advices from Mark Miller (who is an incredibly helpful person btw) on where to start with parser and a bunch of basic operations of building a DXCore plugin. All in all it took me around 4 hours of my time. Thanks to my friend Miha for method naming suggestion. If it wasn’t for him the method names would be a lot worse. And thanks also to Whiletrue guys for their asp.net mvc performance presentation. [...]

Simone April 22nd, 2009

Are you sure you did not run your tests in debug mode?

rudi April 23rd, 2009

> Are you sure you did not run your tests in debug mode?

Uh, I actually did have it on. I had way too many copies of the project while testing this, the debug mode slipped thru.

I’ve checked the performance impact of this change on DUGG – it indeed makes making full paths to partials a moot point. But on the other end, with the fully optimized version, it doesn’t make a difference at all.

I remember testing this switch half a year or more ago, with ASP.NET MVC CTP, it didn’t make a difference at all for our production (MagCloud) website. Any idea when this caching functionality was added to MVC?

Anyways, this requires an errata on the slides and a note about the debug switch and its effect on this path resolving. Coming later this week.

Simone April 23rd, 2009

Thank you for correcting the slides and putting the errata on the post.

I just checked the old source code of ASP.NET MVC: the beta version didn’t have that caching in place, so probably it has been introduced with RC1 in mid-January.

[...] I've read a lot of blog post about Asp.Net MVC Performance. Following the Simone’s post and Rudi’s post i started to test the Asp.Net MVC engine. First of all i wanted to test using the same Apache [...]

ilker Aksu May 9th, 2009

Tank you posting this great presentation.
It made me think a lot on my MVC application.

Jessicatona May 10th, 2009

That was nice. Thank you for sharing this one.

[...] the view using various file-system locations and thus loosing valuable time. Lesson learned from Whiletrue's ASP.NET MVC presentation at [...]

[...] ASP.NET MVC Performance [...]

Sruly Taber June 3rd, 2009

Thanks.

I found this very valuable

Jesús López June 9th, 2009

I have realized that declarative partial views are much faster than RenderPartial. Just register your partial view:

And use it the old way:

<% for (int i = 0; i

hhrvoje June 17th, 2009

Odličan test, baš ono šta je trebalo još od izdavanja prve preview verzije.

Out source software developers September 16th, 2009

Thanks for giving me other metrics as i have only idea of database caching .

[...] the view using various file-system locations and thus loosing valuable time. Lesson learned from Whiletrue's ASP.NET MVC presentation at [...]

[...] article: How to improve the performance of ASP.NET MVC web applications jQuery(document).ready(function($) { [...]

jessie July 22nd, 2011

Giftsideas2u is a gifts paradise for you, where is filled with a variety of gifts for all occasion, or different festivals. It is a good place for you to choose gifts for yourself, lover, parents, companion, children, friends, and relatives. Our web shares profession gifts ideas with you. Don’t hesitate to pick up wholesale gifts from Giftsideas2u.com.

Lelala April 20th, 2013

Would be cool if you could update your numbers for MVC 4.5 :-)
Regards

Leave a Reply

buy generic Nexium
 
?php include(