You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++ Build Insights中Inclusive Duration有效值获取及构建占比分析问询

关于vcperf分析C++构建瓶颈时的时间占比问题

我用vcperf分析C++项目的构建过程以查找瓶颈,但数值展示方式不够直观。比如总构建Duration为3289.218秒(14线程构建,约54分钟),但文件报告中<chrono>的Included Path以3577.424秒的Inclusive Duration (s) Sum位居第一——这显然是多线程的时间总和,对实际分析毫无帮助。我需要明确它对总构建时间的实际影响,也就是要拿到它占实际总构建时间的百分比,这意味着要么把总Duration也按多线程耗时总和的方式计算,要么把Inclusive Duration换算为实际总耗时的占比。

请问:是否可以直接在Windows Performance Analyzer中获取这类有意义的数值?还是必须通过Build Insights SDK进行自定义计算?

我研究了Build Insights SDK的TopHeaders示例,代码如下:

AnalysisControl OnStopActivity(const EventStack& eventStack) override
{
    switch (eventStack.Back().EventId())
    {
    case EVENT_ID_FRONT_END_FILE:
        MatchEventStackInMemberFunction(eventStack, this, 
            &TopHeaders::OnStopFile);
        break;

    case EVENT_ID_FRONT_END_PASS:
        // Keep track of the overall front-end aggregated duration.
        // We use this value when determining how significant is
        // a header's total parsing time when compared to the total
        // front-end time.
        frontEndAggregatedDuration_ += eventStack.Back().Duration();
        break;

    default:
        break;
    }

    return AnalysisControl::CONTINUE;
}

这个示例几乎能满足部分需求:它可以算出头文件解析时间占前端编译(front-end pass)的实际百分比(比如<chrono>占7%)。但问题在于,我无法得知前端编译本身占总构建时间的比例(比如30%还是50%),因此没法判断这些头文件解析耗时的实际影响程度。我认为可以通过添加其他EVENT_ID_*类型的事件来修改这段代码,从而获取总构建时间的相关数据。

内容的提问来源于stack exchange,提问作者Sergey Kolesnik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 15:33:31