Skip to content

Commit 465e0da

Browse files
[BOLT] Avoid repeated hash lookups (NFC) (#140426)
We can use try_emplace to succinctly implement GetOrCreateFuncEntry and GetOrCreateFuncMemEntry. Since it's a bit mouthful to say FuncBasicSampleData::ContainerTy(), this patch changes the second parameters to default ones.
1 parent c2835e7 commit 465e0da

File tree

2 files changed

+8
-40
lines changed

2 files changed

+8
-40
lines changed

bolt/include/bolt/Profile/DataReader.h

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -114,10 +114,8 @@ struct FuncBranchData {
114114

115115
FuncBranchData() {}
116116

117-
FuncBranchData(StringRef Name, ContainerTy Data)
118-
: Name(Name), Data(std::move(Data)) {}
119-
120-
FuncBranchData(StringRef Name, ContainerTy Data, ContainerTy EntryData)
117+
FuncBranchData(StringRef Name, ContainerTy Data = ContainerTy(),
118+
ContainerTy EntryData = ContainerTy())
121119
: Name(Name), Data(std::move(Data)), EntryData(std::move(EntryData)) {}
122120

123121
ErrorOr<const BranchInfo &> getBranch(uint64_t From, uint64_t To) const;
@@ -205,7 +203,7 @@ struct FuncMemData {
205203

206204
FuncMemData() {}
207205

208-
FuncMemData(StringRef Name, ContainerTy Data)
206+
FuncMemData(StringRef Name, ContainerTy Data = ContainerTy())
209207
: Name(Name), Data(std::move(Data)) {}
210208
};
211209

@@ -241,7 +239,7 @@ struct FuncBasicSampleData {
241239
StringRef Name;
242240
ContainerTy Data;
243241

244-
FuncBasicSampleData(StringRef Name, ContainerTy Data)
242+
FuncBasicSampleData(StringRef Name, ContainerTy Data = ContainerTy())
245243
: Name(Name), Data(std::move(Data)) {}
246244

247245
/// Get the number of samples recorded in [Start, End)

bolt/lib/Profile/DataReader.cpp

Lines changed: 4 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1088,26 +1088,11 @@ bool DataReader::hasMemData() {
10881088

10891089
std::error_code DataReader::parseInNoLBRMode() {
10901090
auto GetOrCreateFuncEntry = [&](StringRef Name) {
1091-
auto I = NamesToBasicSamples.find(Name);
1092-
if (I == NamesToBasicSamples.end()) {
1093-
bool Success;
1094-
std::tie(I, Success) = NamesToBasicSamples.insert(std::make_pair(
1095-
Name, FuncBasicSampleData(Name, FuncBasicSampleData::ContainerTy())));
1096-
1097-
assert(Success && "unexpected result of insert");
1098-
}
1099-
return I;
1091+
return NamesToBasicSamples.try_emplace(Name, Name).first;
11001092
};
11011093

11021094
auto GetOrCreateFuncMemEntry = [&](StringRef Name) {
1103-
auto I = NamesToMemEvents.find(Name);
1104-
if (I == NamesToMemEvents.end()) {
1105-
bool Success;
1106-
std::tie(I, Success) = NamesToMemEvents.insert(
1107-
std::make_pair(Name, FuncMemData(Name, FuncMemData::ContainerTy())));
1108-
assert(Success && "unexpected result of insert");
1109-
}
1110-
return I;
1095+
return NamesToMemEvents.try_emplace(Name, Name).first;
11111096
};
11121097

11131098
while (hasBranchData()) {
@@ -1151,26 +1136,11 @@ std::error_code DataReader::parseInNoLBRMode() {
11511136

11521137
std::error_code DataReader::parse() {
11531138
auto GetOrCreateFuncEntry = [&](StringRef Name) {
1154-
auto I = NamesToBranches.find(Name);
1155-
if (I == NamesToBranches.end()) {
1156-
bool Success;
1157-
std::tie(I, Success) = NamesToBranches.insert(std::make_pair(
1158-
Name, FuncBranchData(Name, FuncBranchData::ContainerTy(),
1159-
FuncBranchData::ContainerTy())));
1160-
assert(Success && "unexpected result of insert");
1161-
}
1162-
return I;
1139+
return NamesToBranches.try_emplace(Name, Name).first;
11631140
};
11641141

11651142
auto GetOrCreateFuncMemEntry = [&](StringRef Name) {
1166-
auto I = NamesToMemEvents.find(Name);
1167-
if (I == NamesToMemEvents.end()) {
1168-
bool Success;
1169-
std::tie(I, Success) = NamesToMemEvents.insert(
1170-
std::make_pair(Name, FuncMemData(Name, FuncMemData::ContainerTy())));
1171-
assert(Success && "unexpected result of insert");
1172-
}
1173-
return I;
1143+
return NamesToMemEvents.try_emplace(Name, Name).first;
11741144
};
11751145

11761146
Col = 0;

0 commit comments

Comments
 (0)