thrift-0002 + victoria-metrics-0002 + pulsar-0007 unit + kafka-0010 fix
thrift-0002: t_cpp_generator::is_struct_storage_not_throwing() vector<t_field*> member deduplication uses std::find O(M²) — fix with unordered_set victoria-metrics-0002: MetricName RemoveTagsOn/RemoveTagsIgnoring hasTag() O(T×I) linear scan inside per-metric loop — fix with map-based tag set pulsar-0007: ModularLoadManagerImpl.reapDeadBrokerPreallocations() takes List<String> aliveBrokers, calls contains() O(B) per broker — fix with HashSet kafka-0010: fix unit test worst-case ordering (shared-topic last for slow path)
This commit is contained in:
parent
ba818693db
commit
a922a7ee9d
6 changed files with 577 additions and 2 deletions
|
|
@ -0,0 +1,22 @@
|
|||
diff --git a/compiler/cpp/src/thrift/generate/t_cpp_generator.cc b/compiler/cpp/src/thrift/generate/t_cpp_generator.cc
|
||||
--- a/compiler/cpp/src/thrift/generate/t_cpp_generator.cc
|
||||
+++ b/compiler/cpp/src/thrift/generate/t_cpp_generator.cc
|
||||
@@ -5100,7 +5100,8 @@ bool t_cpp_generator::is_struct_storage_not_throwing(t_struct* tstruct) const {
|
||||
vector<t_field*> members = tstruct->get_members();
|
||||
|
||||
+ std::unordered_set<t_field*> memberSet(members.begin(), members.end()); // O(1) dedup
|
||||
|
||||
for(size_t i=0; i < members.size(); ++i) {
|
||||
t_type* type = get_true_type(members[i]->get_type());
|
||||
@@ -5124,8 +5124,9 @@ bool t_cpp_generator::is_struct_storage_not_throwing(t_struct* tstruct) const {
|
||||
if(type->is_struct()) {
|
||||
const vector<t_field*>& more = ((t_struct*)type)->get_members();
|
||||
for(auto it = more.begin(); it < more.end(); ++it) {
|
||||
- if(std::find(members.begin(), members.end(), *it) == members.end())
|
||||
+ if(memberSet.find(*it) == memberSet.end()) {
|
||||
members.push_back(*it);
|
||||
+ memberSet.insert(*it);
|
||||
+ }
|
||||
}
|
||||
continue;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue