我正在寻找提升C#/ .NET应用程序的方法。 到目前为止我发现的是
Assembly.LoadFrom()
加载dll需要一段时间。您还需要哪些其他工具/技巧/良好实践才能从C#/ .NET程序中获得最佳性能。
答案 0 :(得分:5)
首先要小心ngen。它实际上可能最终会损害性能。有关详细信息,请参阅Jeff Richter的书“CLR via C#,Third Edition”。
当我需要对应用程序进行性能调优时,我个人会使用分析器。我更喜欢的是红门蚂蚁,但市场上有很多好的蚂蚁。然而,使用这些可能有点棘手,因为它们会产生很多噪音。
我见过的大多数问题通常都是由开发人员或整体架构而不是.Net Framework引起的。例如,Asp.Net Web应用程序需要30多次调用数据库才能加载主页。
答案 1 :(得分:1)
尽可能记住昂贵的功能。
public static class Expensive
{
private static readonly ConcurrentDictionary<int, int> _map =
new ConcurrentDictionary<int, int>();
public static int Calculate(int n)
{
return _map.AddOrUpdate(n, Add, (key, value) => value);
}
static int Add(int key)
{
return 0;
}
}
答案 2 :(得分:1)
在准确了解要部署dll的CPU环境之前,不应使用ngen
。并且确切地知道它们不会部署在其他CPU类型上。如果您编译为x86 native并在x64上部署,那就太糟糕了。您将失去编译器可以完成JIT的所有优化。
性能取决于您的应用程序尝试执行的操作。如果它是数据库驱动的Web应用程序与桌面音乐播放器应用程序,则指南会有很大不同。但你应该考虑避免装箱/拆箱,大量反射,使用XmlDocument加载一个非常大的Xml文档,并使用内置的CLR ThreadPool类进行多线程,记得实现IDisposable来命名一些.. < / p>
答案 3 :(得分:1)