Skip to content

Commit cc71025

Browse files
authored
Merge pull request #48 from MetanoKid/filtering-sooner
Refactors activity filtering to happen sooner
2 parents d9663f3 + 405677a commit cc71025

19 files changed

+146
-110
lines changed

projects/AnalysisData/AnalysisData.vcxproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
</ItemGroup>
2121
<ItemGroup>
2222
<ClInclude Include="..\..\src\AnalysisData\BuildTimeline\BuildTimeline.h" />
23-
<ClInclude Include="..\..\src\AnalysisData\BuildTimeline\IgnoredEntries.h" />
2423
<ClInclude Include="..\..\src\AnalysisData\BuildTimeline\ProcessThreadRemapping\PackedProcessThreadRemapper.h" />
2524
<ClInclude Include="..\..\src\AnalysisData\BuildTimeline\ProcessThreadRemapping\ProcessThreadRemapping.h" />
2625
<ClInclude Include="..\..\src\AnalysisData\BuildTimeline\TimelineEntry.h" />

projects/AnalysisData/AnalysisData.vcxproj.filters

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,6 @@
3535
<ClInclude Include="..\..\src\AnalysisData\Utilities\CppBuildInsightsDataConversion.h">
3636
<Filter>Utilities</Filter>
3737
</ClInclude>
38-
<ClInclude Include="..\..\src\AnalysisData\BuildTimeline\IgnoredEntries.h">
39-
<Filter>BuildTimeline</Filter>
40-
</ClInclude>
4138
<ClInclude Include="..\..\src\AnalysisData\TemplateInstantiationData.h" />
4239
<ClInclude Include="..\..\src\AnalysisData\SymbolKey.h" />
4340
<ClInclude Include="..\..\src\AnalysisData\SymbolNames.h" />

projects/BuildAnalyzer/BuildAnalyzer.vcxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
</ItemGroup>
2121
<ItemGroup>
2222
<ClInclude Include="..\..\src\BuildAnalyzer\Analyzers\BuildTimeline\BuildTimelineAnalyzer.h" />
23-
<ClInclude Include="..\..\src\BuildAnalyzer\Analyzers\BuildTimeline\FilterTimelineAnalyzer.h" />
23+
<ClInclude Include="..\..\src\BuildAnalyzer\Analyzers\BuildTimeline\FilterTimeline.h" />
2424
<ClInclude Include="..\..\src\BuildAnalyzer\Analyzers\FileCompilations\FileCompilationsAnalyzer.h" />
2525
<ClInclude Include="..\..\src\BuildAnalyzer\Analyzers\FileInclusions\FileInclusionsAnalyzer.h" />
2626
<ClInclude Include="..\..\src\BuildAnalyzer\Analyzers\FunctionCompilations\FunctionCompilationsAnalyzer.h" />
@@ -33,7 +33,7 @@
3333
</ItemGroup>
3434
<ItemGroup>
3535
<ClCompile Include="..\..\src\BuildAnalyzer\Analyzers\BuildTimeline\BuildTimelineAnalyzer.cpp" />
36-
<ClCompile Include="..\..\src\BuildAnalyzer\Analyzers\BuildTimeline\FilterTimelineAnalyzer.cpp" />
36+
<ClCompile Include="..\..\src\BuildAnalyzer\Analyzers\BuildTimeline\FilterTimeline.cpp" />
3737
<ClCompile Include="..\..\src\BuildAnalyzer\Analyzers\FileCompilations\FileCompilationsAnalyzer.cpp" />
3838
<ClCompile Include="..\..\src\BuildAnalyzer\Analyzers\FileInclusions\FileInclusionsAnalyzer.cpp" />
3939
<ClCompile Include="..\..\src\BuildAnalyzer\Analyzers\FunctionCompilations\FunctionCompilationsAnalyzer.cpp" />

projects/BuildAnalyzer/BuildAnalyzer.vcxproj.filters

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,12 @@
4040
<ClInclude Include="..\..\src\BuildAnalyzer\Analyzers\BuildTimeline\BuildTimelineAnalyzer.h">
4141
<Filter>Analyzers\BuildTimeline</Filter>
4242
</ClInclude>
43-
<ClInclude Include="..\..\src\BuildAnalyzer\Analyzers\BuildTimeline\FilterTimelineAnalyzer.h">
44-
<Filter>Analyzers\BuildTimeline</Filter>
45-
</ClInclude>
4643
<ClInclude Include="..\..\src\BuildAnalyzer\Analyzers\TemplateInstantiations\TemplateInstantiationsAnalyzer.h">
4744
<Filter>Analyzers\TemplateInstantiations</Filter>
4845
</ClInclude>
46+
<ClInclude Include="..\..\src\BuildAnalyzer\Analyzers\BuildTimeline\FilterTimeline.h">
47+
<Filter>Analyzers\BuildTimeline</Filter>
48+
</ClInclude>
4949
</ItemGroup>
5050
<ItemGroup>
5151
<ClCompile Include="..\..\src\BuildAnalyzer\BuildAnalyzer.cpp" />
@@ -64,12 +64,12 @@
6464
<ClCompile Include="..\..\src\BuildAnalyzer\Analyzers\BuildTimeline\BuildTimelineAnalyzer.cpp">
6565
<Filter>Analyzers\BuildTimeline</Filter>
6666
</ClCompile>
67-
<ClCompile Include="..\..\src\BuildAnalyzer\Analyzers\BuildTimeline\FilterTimelineAnalyzer.cpp">
68-
<Filter>Analyzers\BuildTimeline</Filter>
69-
</ClCompile>
7067
<ClCompile Include="..\..\src\BuildAnalyzer\Analyzers\TemplateInstantiations\TemplateInstantiationsAnalyzer.cpp">
7168
<Filter>Analyzers\TemplateInstantiations</Filter>
7269
</ClCompile>
70+
<ClCompile Include="..\..\src\BuildAnalyzer\Analyzers\BuildTimeline\FilterTimeline.cpp">
71+
<Filter>Analyzers\BuildTimeline</Filter>
72+
</ClCompile>
7373
</ItemGroup>
7474
<ItemGroup>
7575
<None Include="packages.config" />

src/AnalysisData/BuildTimeline/BuildTimeline.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,32 @@ void BuildTimeline::FinishEntry(const CppBI::Activities::Activity& activity)
6060
m_remapper.CalculateLocalChildrenData(entry);
6161
}
6262

63+
void BuildTimeline::RemoveHierarchy(const TEventInstanceId& parentId, const TEventInstanceId& id)
64+
{
65+
TimelineEntry* parentEntry = GetEntry(parentId);
66+
assert(parentEntry != nullptr);
67+
68+
// ensure parent no longer points to it
69+
parentEntry->RemoveChild(id);
70+
71+
// remove entry from the hierarchy (no need to ensure intermediate parents don't point to intermediate children, because the full hierarchy will be deleted)
72+
RemoveEntry(id);
73+
}
74+
75+
void BuildTimeline::RemoveEntry(const TEventInstanceId& id)
76+
{
77+
TimelineEntry* entry = GetEntry(id);
78+
if (entry != nullptr)
79+
{
80+
for (TimelineEntry* child : entry->GetChildren())
81+
{
82+
RemoveEntry(child->GetId());
83+
}
84+
85+
m_entries.erase(id);
86+
}
87+
}
88+
6389
void BuildTimeline::FinishTimeline()
6490
{
6591
assert(m_remapper.GetRemappings().empty());

src/AnalysisData/BuildTimeline/BuildTimeline.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class BuildTimeline
3434
void AddNestedEntry(const CppBI::Activities::Activity& parent,
3535
const CppBI::Activities::Activity& activity);
3636
void FinishEntry(const CppBI::Activities::Activity& activity);
37+
void RemoveHierarchy(const TEventInstanceId& parentId, const TEventInstanceId& id);
3738
void FinishTimeline();
3839

3940
void UpdateEntryName(const TEventInstanceId& id, const std::string& name);
@@ -48,5 +49,6 @@ class BuildTimeline
4849
PackedProcessThreadRemapper m_remapper;
4950

5051
TimelineEntry* AddEntry(const CppBI::Activities::Activity& activity);
52+
void RemoveEntry(const TEventInstanceId& id);
5153
TimelineEntry* GetEntry(const TEventInstanceId& id);
5254
};

src/AnalysisData/BuildTimeline/IgnoredEntries.h

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/AnalysisData/BuildTimeline/TimelineEntry.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,17 @@ void TimelineEntry::AddChild(TimelineEntry* entry)
3333
m_children.push_back(entry);
3434
}
3535

36+
void TimelineEntry::RemoveChild(const TEventInstanceId& id)
37+
{
38+
auto it = std::find_if(m_children.begin(), m_children.end(), [&](const TimelineEntry* child)
39+
{
40+
return child->GetId() == id;
41+
});
42+
assert(it != m_children.end());
43+
44+
m_children.erase(it);
45+
}
46+
3647
void TimelineEntry::SetName(const std::string& name)
3748
{
3849
m_name = name;

src/AnalysisData/BuildTimeline/TimelineEntry.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class TimelineEntry
2020
~TimelineEntry();
2121

2222
void AddChild(TimelineEntry* entry);
23+
void RemoveChild(const TEventInstanceId& id);
2324
bool AddProperty(const std::string& key, const std::string& value);
2425

2526
void SetName(const std::string& name);

src/AnalysisExporter/BuildTimeline/BuildTimelineExporter.cpp

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,8 @@
1313
namespace
1414
{
1515
void AddEntry(const TimelineEntry* entry, rapidjson::Value& traceEvents, rapidjson::Document& document,
16-
const TProcessThreadRemappings& remappings, const TIgnoredEntries& ignoredEntries)
16+
const TProcessThreadRemappings& remappings)
1717
{
18-
// apply filtering
19-
if (ignoredEntries.find(entry->GetId()) != ignoredEntries.end())
20-
{
21-
return;
22-
}
23-
2418
auto itRemap = remappings.find(entry->GetId());
2519
const TProcessId& processId = itRemap != remappings.end() ? itRemap->second.ProcessId : entry->GetProcessId();
2620
const TThreadId& threadId = itRemap != remappings.end() ? itRemap->second.ThreadId : entry->GetThreadId();
@@ -84,7 +78,7 @@ namespace
8478
// write children entries
8579
for (auto&& child : entry->GetChildren())
8680
{
87-
AddEntry(child, traceEvents, document, remappings, ignoredEntries);
81+
AddEntry(child, traceEvents, document, remappings);
8882
}
8983

9084
// write "end" event
@@ -103,9 +97,8 @@ namespace
10397
}
10498
}
10599

106-
BuildTimelineExporter::BuildTimelineExporter(const BuildTimeline& timeline, const TIgnoredEntries& ignoredEntries)
100+
BuildTimelineExporter::BuildTimelineExporter(const BuildTimeline& timeline)
107101
: m_timeline(timeline)
108-
, m_ignoredEntries(ignoredEntries)
109102
{
110103
}
111104

@@ -134,7 +127,7 @@ bool BuildTimelineExporter::ExportTo(const std::string& path) const
134127
rapidjson::Value traceEvents(rapidjson::kArrayType);
135128
for (auto&& root : m_timeline.GetRoots())
136129
{
137-
AddEntry(root, traceEvents, document, m_timeline.GetProcessThreadRemappings(), m_ignoredEntries);
130+
AddEntry(root, traceEvents, document, m_timeline.GetProcessThreadRemappings());
138131
}
139132
document.AddMember("traceEvents", traceEvents, document.GetAllocator());
140133
}

0 commit comments

Comments
 (0)