gpt4 book ai didi

asp.net-mvc - HttpContext.Current 调用背后有多少计算量?

转载 作者:行者123 更新时间:2023-12-02 05:54:30 25 4
gpt4 key购买 nike

贵吗?

我正在开发一个直接渲染到 Response.Output 的 HtmlHelper,以节省不必要的字符串创建,我需要在以下选项之间进行选择:

<% Validator.RenderClient(Response.Output); %>

<% Validator.RenderClient(); %>

并从 HttpContext.Current.Response 获取 textWriter

最佳答案

@道金斯

100 次运行太少,您需要运行大约 10000 次并重复,然后取平均值才能获得可靠的结果。在您的示例中,误差范围太大,但这是正确的方法。

这就是我所做的:

var results1 = new List<long>();
var results2 = new List<long>();

for (int j = 0; j < 100; j++)
{
var sp = new System.Diagnostics.Stopwatch();

// With HttpContext.Current:
sp.Start();
for (int i = 0; i < 10000; i++)
{
HttpContext.Current.Response.Output.Write(i);
}
sp.Stop();

results1.Add(sp.ElapsedTicks);

// Without:
TextWriter output2 = HttpContext.Current.Response.Output;
sp.Reset();

sp.Start();
for (int i = 0; i < 10000; i++)
{
output2.Write(i);
}
sp.Stop();

HttpContext.Current.Response.Clear();

results2.Add(sp.ElapsedTicks);
}

results1.Sort();
results2.Sort();

HttpContext.Current.Response.Write(string.Format("HttpContext.Current={0:0.000}ms, Local variable={1:0.000}ms, R={2:0.0%}<br/>", results1[results1.Count / 2] / (double)TimeSpan.TicksPerMillisecond, results2[results2.Count / 2] / (double)TimeSpan.TicksPerMillisecond, (double)results1[results1.Count / 2] / (double)results2[results2.Count / 2]));

您的结果显示存在 18% 的性能差异,这表明它更昂贵,但下降了 8%。

我重新运行了几次数字,得出了 10% 的差异,误差幅度小于 1%。

它稳定在:

HttpContext.Current=0,536ms, Local variable=0,486ms, R=110,2% 

无论如何,HttpContext.Current 会造成严重的性能问题,每个请求需要调用它超过 10000 次(成本主要由 Response.Write 调用来弥补)。但这可能不会发生。

关于asp.net-mvc - HttpContext.Current 调用背后有多少计算量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/290927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com