From: Kefu Chai Date: Fri, 7 May 2021 13:36:48 +0000 (+0800) Subject: crimson/os/seastore: use map::merge() to merge maps X-Git-Tag: v17.1.0~2037^2~1 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=79be27fd91f08d746ca6f73cd93dee184df61a1b;p=ceph.git 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 --- 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 4f5a7f6b5a0c6..729c54b115b78 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); });