这个网站上已经存在很多性能问题,但是我发现几乎所有这些都是特定于问题且相当狭窄的问题.几乎所有人都重复这些建议,以避免过早优化.
我们假设:
我在这里寻找的是在一个关键算法中挤出最后几个百分点的策略和技巧,除此之外别无他法.
理想情况下,尝试使答案语言不可知,并在适用的情况下指出建议策略的任何缺点.
我将使用我自己的初步建议添加回复,并期待Stack Overflow社区可以想到的任何其他内容.
您在使用.net程序时使用了哪些分析器,您会特别推荐哪些?
我写了两个等价的方法:
static bool F<T>(T a, T b) where T : class
{
    return a == b;
}
static bool F2(A a, A b)
{
    return a == b;
}
时差:
00:00:00.0380022 
00:00:00.0170009
测试代码:
var a = new A();
for (int i = 0; i < 100000000; i++)
    F<A>(a, a);
Console.WriteLine(DateTime.Now - dt);
dt = DateTime.Now;
for (int i = 0; i < 100000000; i++)
    F2(a, a);
Console.WriteLine(DateTime.Now - dt);
有谁知道为什么?
在下面的评论中,dtb*显示CIL:
IL for F2: ldarg.0, ldarg.1, …我有dll方法,应该是"QoS" - 这种方法应该被称为每秒最多100次:
    private static extern int ExecTrans(int connectionId);
这个方法只在程序中的一个地方使用,所以可以在这个地方进行qos.我需要单独的"qos counter" connectionId.所以ExecTrans(1),ExecTrans(2)应该去不同的柜台.
在第一次迭代时,我想计算调用方法的频率(对于每个方法connectionId).即我想要"实时统计".有两种方法:
- allow to exceed limitiation for a short period. for example allow "100 transaction from 0 to 1 second, 100 transaction from 1 to 2 seconds and 200 transactions from 0.5 to 1.5 second".
- at any second interval transactions should not exceed 100.
现在我不关心使用哪种方法,但我会选择一种创建较少的"开销".我希望qos尽可能少地添加"额外工作",因为它的交易软件每0.1毫秒都很敏感.
至于第一种方法,我认为我可以使用类似的东西(pseude-code,可能stats并且curStats应该是线程安全的):
private int[] stats      // statistic to display to user
private …如何在 C# 中测试性能?
我现在所知道的就是使用:
Stopwatch sw = new Stopwatch();
sw.Start();
{
     //code to test
}
sw.Stop();
还有其他方法可以做到这一点还是上述方法错误?
我在上周五离开工作之前运行了一些代码,我周一在这里,它以OutOfMemoryException停止.我估计整个过程需要进行数百亿次计算,所以这不是一项小任务.
我甚至不知道如何解决这个问题.
有什么指针吗?
可能的重复:
什么是好的 .NET 分析器?
有没有不错的 C# 分析器?
我经常想分析我们团队项目中的代码以比较速度和效率。但是,根据 Microsoft 的性能分析初学者指南,Visual Studio 性能向导不是我们使用的 Visual Studio 2010 Professional 的一部分。
鉴于此限制,似乎需要第三方应用程序。我怀疑我能否说服我的老板在分析应用程序上花很多钱。我有哪些选择,以及如何使用这样的工具?
编辑
感谢您提供有关哪些分析器可用的其他问题的链接。很有用!我正在编辑这个问题,以更多地关注如何使用这些分析器。有什么显着差异吗?在可用性方面?
我正在尝试考虑输入统计信息和某种登录程序的最佳方法.1.有没有人有一篇关于在程序中实施的统计数据的好文章?
2.我可以创建一个属性,以便在某个方法之前调用计时器来测量运行所花费的时间吗?例如
class A
{
  [RunTimer]
  public void Foo()
  {
     // do stuff
  }
}
编辑
 
好我们希望有机会在运行时控制统计数据,而不仅仅是ob dev或QA时间.
我想在服务器中运行时测量.Net应用程序的性能,尤其是ASP.Net中的Web应用程序.
我需要知道任何基准工具使我知道我的源代码可以优化.只要基准工具可以帮助我优化网站的性能.
有关获得仅测量.Net的基准工具的建议吗?请列出商业和免费应用程序或任何开源基准测试工具.
我试图弄清楚最好的方法是找出我的应用程序的哪些部分运行时间最长(最大的运行成本).该应用程序并不过分复杂,但我想确保我已经正确调整了所有部分,以便我可以处理更大的负载.
应用程序:加载/粉碎xml文档并将内容转储到数据库中.该应用程序使用Linq to XML来解析xml,并使用SQL Server TVP将数据传递给DB.因为我正在使用TVP,所以即使数据集合数据不大(XML文件最多为1MB),我也可以往返数据库.
任何有关如何隔离瓶颈的建议都将不胜感激.
一如既往地非常感谢反馈.
我的页面中有一个用户控件,位于更新面板内.通过使用用户控件,我正在为用户显示一条消息.我需要每隔5分钟更改一次消息.消息存储在数据库和用户中控件将每隔5分钟自动从数据库中检索一次消息.我的问题是,当有超过50个用户访问同一页面时,然后每5分钟,请求从每个客户端自动发送到服务器,这会降低服务器性能.那么任何人都可以帮我解决这个性能问题.
c# ×8
performance ×3
.net ×2
asp.net ×2
profiling ×2
attributes ×1
benchmarking ×1
c#-4.0 ×1
generics ×1
logging ×1
open-source ×1
optimization ×1
profiler ×1
statistics ×1
templates ×1
testing ×1