【发布时间】:2013-02-09 00:30:42
【问题描述】:
我一直在尝试优化 JavaScript 编码函数(在 C# 中)以提高其性能(整体尝试提高企业 Web 应用程序的性能)。我们尝试使用 .NET HttpUtility.JavaScriptStringEncode,但它没有按照我们的数据层预期的方式进行编码(并且更改数据层不在桌面上)。
使用 RedGate 分析器工具,我确定我们功能的最佳性能约为总页面负载的 8%。当我使用 .NET 函数(在接受它的页面上)时,它大约占页面总负载的 0.08%。我们反射 .NET 函数以查看它们在工作什么魔法,当我将反射代码复制到函数中并直接运行它时,它的执行率约为 10%。
我很好奇为什么。 .NET 函数如何准备不同的方式来奖励这种性能提升?
我提前道歉,但我无法粘贴我们正在使用的功能,但我认为这不会影响回答问题。
【问题讨论】:
-
有趣。只是确保,但是您在同一 PC 和页面上的发布模式下运行了这些基准测试,对吗?哦,您是否在同一次运行中多次运行测试以确保 JIT 在您对其进行基准测试之前已经生成了所有代码?
-
实际运行时是否发生了变化,或者只是整个页面加载的一小部分?也许页面更复杂,总的速度更慢。
-
.NET 函数的准备方式不同,因为它是由 Microsoft 的向导创建的。
-
@Merrdin 你确定你不包括 JIT 成本吗?换句话说,如果您第二次执行相同的功能,是否会发生同样的情况?
-
@Merrdin:嗯。您是否尝试过运行 NGEN 并将程序集放入 GAC?
标签: c# .net dll assemblies