【问题标题】:Call to String.Concat causing high-cpu not showing in CPU Usage tab调用 String.Concat 导致 CPU 使用率选项卡中未显示高 CPU
【发布时间】:2017-09-14 19:57:31
【问题描述】:

我的示例应用如下所示。

class Program
    {
        static List<XmlNode> memList = new List<XmlNode>();
        static void Main(string[] args)
        {
            Console.WriteLine("Press any key to start");
            Console.ReadKey();
            CauseHighCPU();
        }



        static public void CauseHighCPU()
        {
            string str = string.Empty;
            for (int i = 0; i < 100000; i++)
            {
                str += " Hello World";
            }
        }
}

我希望字符串连接会导致高 CPU。当我使用 PerfView 分析应用程序时,这是非常响亮和清晰的。

我正在尝试使用 Visual Studio 2017 诊断中心进行类似的分析。下面是它的 CPU 使用率选项卡显示的内容。

它的调用树视图没有显示对 Concat 的任何调用,但这里有一些外部代码

这让我觉得它可能与我的配置中缺少的东西有关。正如您在此处看到的,未选中 Enable Just My Code。

也不确定它是否相关,但这里是符号设置。

任何可能导致 VS 未显示高 CPU 使用率的根本原因的问题。

【问题讨论】:

    标签: visual-studio debugging visual-studio-2017 cpu-usage


    【解决方案1】:

    您不应该查看 Debugging 的选项,而是查看 Performance Tools 的选项,然后禁用“Just my code”:

    【讨论】:

    • 这是我的朋友。非常感谢。但是,现在这从 ntdll.dll、wow64.dll 中带来了太多的“垃圾”。 PerfView 视图太干净了。无论如何在VS中获得相同类型的堆栈?
    • @jimcrown:抱歉,我不知道在 Visual Studio 中清理它的方法
    • 别担心,我会在这里发布一个单独的问题,因为无论如何这是一个单独的主题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2020-03-07
    • 2013-02-12
    相关资源
    最近更新 更多