Skip to content
This repository has been archived by the owner on Dec 14, 2018. It is now read-only.

Performance Scenario: Basic Views #4175

Closed
9 of 10 tasks
rynowak opened this issue Feb 27, 2016 · 4 comments
Closed
9 of 10 tasks

Performance Scenario: Basic Views #4175

rynowak opened this issue Feb 27, 2016 · 4 comments
Assignees
Labels
Milestone

Comments

@rynowak
Copy link
Member

rynowak commented Feb 27, 2016

This is top-level performance scenario for 1.0.0. We're using this item to track the status and all of the individual improvements.

Code here: https://github.com/aspnet/Performance/tree/dev/testapp/BasicViews

Summary

This is a simple browser-based app that accepts a form post, updates a database, and renders validation errors + the same form. This should be naively written, and very similar to a 'Create' view that a developer would generate using scaffolding.

  • Conventional routing
  • Database (localdb)
  • Layout page from project template (script/link taghelpers)
  • Startup code from no-auth project template
  • View code using taghelpers for form and inputs

Variations

  • Using TagHelpers (primary) - http://+:5000/
  • Using HTML helpers - http://+:5000/Home/HtmlHelpers

Status

Scenario Status: Complete

  • Update Layout Page
  • Add database
  • Add validation attributes
  • Switch default to use taghelpers
  • Add antiforgery validation + client

Known Investigations/Improvements:

@rynowak rynowak self-assigned this Feb 27, 2016
@rynowak rynowak added the Perf label Feb 27, 2016
@Eilon Eilon modified the milestone: 1.0.0-rc2 Feb 29, 2016
@rynowak
Copy link
Member Author

rynowak commented Mar 7, 2016

Some baselines now that we've completed the scenario. All measurements are x64 CoreCLR.

Allocations - 3001 requests
image

Managed Memory Usage - After Warmup - 14.7mb
image

Sampling Data (execution profiling) - Here's a markdown table for top-down data

System Percentage (Inclusive) Stack
Routing 0.50% Microsoft.AspNetCore.Routing.RouteCollection.RouteAsync(RouteContext)
Antiforgery Validation 4.50% Microsoft.AspNetCore.Mvc.ViewFeatures.Internal.ValidateAntiforgeryTokenAuthorizationFilter.OnAuthorizationAsync(AuthorizationFilterContext)
ModelBinding 2.50% Microsoft.AspNetCore.Mvc.Internal.ControllerArgumentBinder.BindActionArgumentsAsync(ControllerContext, Object)
Validation 0% Microsoft.AspNetCore.Mvc.Internal.DefaultObjectValidator.Validate(ActionContext, IModelValidatorProvider, ValidationStateDictionary, String, Object)
EF SetEntityState 16% Microsoft.EntityFrameworkCore.DbContext.SetEntityState(TEntity, EntityState)
EF SaveChangesAsync 5% Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(CancellationToken)
EF ??? 16% Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor+d__1.MoveNext()
EF Commit 18% Microsoft.EntityFrameworkCore.Storage.RelationalTransaction.Commit()
View Rendering 30% Microsoft.AspNetCore.Mvc.Internal.FilterActionInvoker.InvokeAllResultFiltersAsync(IActionResult)
Other 7.50%

@Eilon Eilon modified the milestones: 1.0.0, 1.0.0-rc2 Apr 1, 2016
@Eilon
Copy link
Member

Eilon commented Apr 1, 2016

Moving to 1.0.0.

@rynowak
Copy link
Member Author

rynowak commented Apr 13, 2016

Updates here - allocation data

image

@rynowak
Copy link
Member Author

rynowak commented May 24, 2016

Update 5/23

Allocation Data: 3000 requests
image

No really significant changes here, we've made some small improvements in URL generation in routing and some improvements to generated TagHelper view code, but nothing major to report.

Sampling data is hard to summarize here - very little request time is spent doing ASP.NET related concerns, significant amount of time spent in EF. Based on this data we're still concerned about #3924 see here

@rynowak rynowak modified the milestones: 1.0.1, 1.0.0 May 25, 2016
@Eilon Eilon modified the milestones: 1.1.0-preview1, 1.1.0 Oct 6, 2016
@Eilon Eilon modified the milestones: 1.1.0, 1.2.0 Oct 20, 2016
@Eilon Eilon modified the milestones: 2.0.0-preview1, 2.0.0-preview2 Apr 25, 2017
@Eilon Eilon modified the milestones: 2.0.0-preview2, 2.0.0-preview3 May 15, 2017
@Eilon Eilon closed this as completed Jun 6, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants