【问题标题】:.net BitArray.Get performance issue.net BitArray.Get 性能问题
【发布时间】:2016-12-27 13:22:44
【问题描述】:

我有一个 asp.net 应用程序并试图优化它的性能。我发现 BitArray.Get 方法 performance 存在一个问题。它的执行时间从 100 到 250 毫秒不同。实在是太过分了。此方法在 IEnumerable.FirstOrDefault 内部调用。是否知道为什么会发生这种情况以及如何对其进行优化?

更新

此方法调用在 EF 实现期间出现。来自同一跟踪的另一个示例:

还有其他示例,方法处理持续时间仅为 1 毫秒。

【问题讨论】:

  • 这棵树中的两个调用都是不可能的。这些数据来自哪里?
  • 您是否正在优化 0.01% 的整体应用程序 CPU 消耗?应该先钓到更大的鱼。
  • 查看上下文会很有用。请向我们展示您的代码。也许有人可以优化它。 252ms是调用1158375次的时间吗?
  • @usr 仅跟踪分析结果
  • @AloisKraus 我发现了其他鱼,我知道如何处理。不幸的是,这种方法经常出现在分析快照中并且需要太多时间

标签: c# .net performance entity-framework-6 bitarray


【解决方案1】:

您误解了数据。

在您的第二张图片中,BitArray.Get() 花费的时间大约是第一张图片的 3 倍,调用次数也大约是第一张图片的 3 倍(~3.1mio 与 ~1.2mio 相比)。因此我得出结论,以毫秒为单位的时间反映了这数百万次调用,而不仅仅是一个调用!在这两种情况下,每次调用的时间约为每次调用约 200ns(218 和 201ns)。仅有 8.4% 的差异。这是相当一致的。

BitArray.Get() 比你想象的快 1 兆倍!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    相关资源
    最近更新 更多