Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimize Request.SetHeader #19797

Merged
merged 9 commits into from
Mar 25, 2021

Conversation

christothes
Copy link
Member

@christothes christothes commented Mar 24, 2021

fixes #19750

Note that for HttpClientTransport Headers.SetValue for headers other than Authorization, the perf is essentially the same. However, in the hot path of setting the Authorization header, we see a 2x improvement.

For HttpWebRequestTransport (including MockRequest and MemoryRequest) we see a nearly 4x improvement.

|                          Method |      Mean |    Error |   StdDev | Ratio | RatioSD |  Gen 0 | Gen 1 | Gen 2 | Allocated |
|-------------------------------- |----------:|---------:|---------:|------:|--------:|-------:|------:|------:|----------:|
|     HttpClientTsp_SetHeader_Old | 442.31 ns | 4.483 ns | 4.193 ns | 20.62 |    0.20 | 0.0324 |     - |     - |     272 B |
|     HttpClientTsp_SetHeader_New | 452.10 ns | 7.264 ns | 6.795 ns | 21.08 |    0.41 | 0.0324 |     - |     - |     272 B |
| HttpClientTsp_SetAuthHeader_New | 219.25 ns | 2.130 ns | 1.888 ns | 10.22 |    0.14 | 0.0153 |     - |     - |     128 B |
| HttpWebRequestTsp_SetHeader_Old |  83.51 ns | 1.244 ns | 1.164 ns |  3.89 |    0.05 | 0.0105 |     - |     - |      88 B |
| HttpWebRequestTsp_SetHeader_New |  21.45 ns | 0.188 ns | 0.167 ns |  1.00 |    0.00 |      - |     - |     - |         - |

@christothes christothes self-assigned this Mar 24, 2021
@ghost ghost added the Azure.Core label Mar 24, 2021
@christothes christothes added the pillar-performance The issue is related to performance, one of our core engineering pillars. label Mar 24, 2021
Copy link
Contributor

@pakrym pakrym left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PERF!

@christothes christothes merged commit 3d92fb3 into Azure:master Mar 25, 2021
azure-sdk pushed a commit to azure-sdk/azure-sdk-for-net that referenced this pull request Oct 12, 2022
[Purview - API Scanning] API Review 2022-07-01-preview  (Azure#19797)

* Adding a new dataplane api scanning version

* fixing example validation

* adds new scanning version details to ReadMe

* fixing validation errors

* marks value as requried field for paginated results

* pr feedback

* fixing examples

* fixing examples

* fixing examples

* fixing examples

* setting managedVNetName to default

* setting managedVNetName to default

* pr feedback, initial commit

* fixes validation errors

* fixes model-validation errors

* pr feedback

* pr feedback

* remove error code header

* changing path pattern for interactiveQuery APIs

* fixes avocado
azure-sdk pushed a commit to azure-sdk/azure-sdk-for-net that referenced this pull request Oct 12, 2022
[Purview - API Scanning] API Review 2022-07-01-preview  (Azure#19797)

* Adding a new dataplane api scanning version

* fixing example validation

* adds new scanning version details to ReadMe

* fixing validation errors

* marks value as requried field for paginated results

* pr feedback

* fixing examples

* fixing examples

* fixing examples

* fixing examples

* setting managedVNetName to default

* setting managedVNetName to default

* pr feedback, initial commit

* fixes validation errors

* fixes model-validation errors

* pr feedback

* pr feedback

* remove error code header

* changing path pattern for interactiveQuery APIs

* fixes avocado
azure-sdk pushed a commit to azure-sdk/azure-sdk-for-net that referenced this pull request Oct 12, 2022
[Purview - API Scanning] API Review 2022-07-01-preview  (Azure#19797)

* Adding a new dataplane api scanning version

* fixing example validation

* adds new scanning version details to ReadMe

* fixing validation errors

* marks value as requried field for paginated results

* pr feedback

* fixing examples

* fixing examples

* fixing examples

* fixing examples

* setting managedVNetName to default

* setting managedVNetName to default

* pr feedback, initial commit

* fixes validation errors

* fixes model-validation errors

* pr feedback

* pr feedback

* remove error code header

* changing path pattern for interactiveQuery APIs

* fixes avocado
azure-sdk pushed a commit to azure-sdk/azure-sdk-for-net that referenced this pull request Oct 12, 2022
[Purview - API Scanning] API Review 2022-07-01-preview  (Azure#19797)

* Adding a new dataplane api scanning version

* fixing example validation

* adds new scanning version details to ReadMe

* fixing validation errors

* marks value as requried field for paginated results

* pr feedback

* fixing examples

* fixing examples

* fixing examples

* fixing examples

* setting managedVNetName to default

* setting managedVNetName to default

* pr feedback, initial commit

* fixes validation errors

* fixes model-validation errors

* pr feedback

* pr feedback

* remove error code header

* changing path pattern for interactiveQuery APIs

* fixes avocado
azure-sdk pushed a commit to azure-sdk/azure-sdk-for-net that referenced this pull request Oct 12, 2022
[Purview - API Scanning] API Review 2022-07-01-preview  (Azure#19797)

* Adding a new dataplane api scanning version

* fixing example validation

* adds new scanning version details to ReadMe

* fixing validation errors

* marks value as requried field for paginated results

* pr feedback

* fixing examples

* fixing examples

* fixing examples

* fixing examples

* setting managedVNetName to default

* setting managedVNetName to default

* pr feedback, initial commit

* fixes validation errors

* fixes model-validation errors

* pr feedback

* pr feedback

* remove error code header

* changing path pattern for interactiveQuery APIs

* fixes avocado
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Azure.Core pillar-performance The issue is related to performance, one of our core engineering pillars.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Request.AddHeader may allocate more than necessary
2 participants