From 79be27fd91f08d746ca6f73cd93dee184df61a1b Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Fri, 7 May 2021 21:36:48 +0800 Subject: [PATCH] crimson/os/seastore: use map::merge() to merge maps C++17's std::map allows us to merge two maps, and in this case, we can even consume `child_result`. so map::merge() is used instead of insert() in hope to avoid the memcpy and allocation of pair<> nodes. Signed-off-by: Kefu Chai --- .../os/seastore/omap_manager/btree/omap_btree_node_impl.cc | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc b/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc index 4f5a7f6b5a0..729c54b115b 100644 --- a/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc +++ b/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc @@ -232,10 +232,8 @@ OMapInnerNode::list( if (child_result.size() && start) { assert(child_result.begin()->first > *start); } - result.insert( - child_result.begin(), - child_result.end()); - biter++; + result.merge(std::move(child_result)); + ++biter; assert(child_complete || result.size() == config.max_result_size); return list_ertr::make_ready_future(false); }); -- 2.39.5