在 Visual Studio 中对多线程 OMP C++ 进行性能分析

问题描述 投票:0回答:0

我目前正在分析当前在 Visual Studio 2017 下运行的大量多线程 C++。查看任务管理器下的结果,我的程序保持所有 CPU 内核和线程以 100% 的速度运行以处理正在分析的任务。探查器在我的代码中显示这是约 33% 的时间,在 KernelBase.dll 中显示为约 60% 的时间。我的代码没有进行任何内核调用,所以我想知道这 60% 是否因上下文切换而丢失,或者它只是在 OMP 应用程序中使用探查器的功能。为了测试这一点,我正在考虑编写一个非常简单的多线程应用程序,看看它是否会给出类似的结果,但想知道是否还有其他我应该注意的因素?

编辑: 根据下面的评论,我已经包含了所有内核符号,看起来 NtYieldExecution 是问题所在。有一个相关的问题here但没有回应。我会围绕这个做更多的谷歌搜索,看看会出现什么。

c++ multithreading visual-studio openmp profiling
© www.soinside.com 2019 - 2024. All rights reserved.