Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

improve memory consumption #138

Closed
barbieri opened this issue Dec 19, 2020 · 0 comments · Fixed by #141
Closed

improve memory consumption #138

barbieri opened this issue Dec 19, 2020 · 0 comments · Fixed by #141

Comments

@barbieri
Copy link
Contributor

Creating this issue to track the improvements. Compared to my https://github.com/profusion/cppgraphqlgen/tree/parser-tweaks we still have some ground to cover. Results are comparing using the samples_nointrospection running a loop of 500:

diff --git a/samples/today/sample.cpp b/samples/today/sample.cpp
index 376a730..b097fdc 100644
--- a/samples/today/sample.cpp
+++ b/samples/today/sample.cpp
@@ -84,6 +84,7 @@ int main(int argc, char** argv)
 
                std::cout << "Executing query..." << std::endl;
 
+               for (int i = 0; i < 500; i++) {
                std::cout << response::toJSON(service
                                                                                  ->resolve(nullptr,
                                                                                          query,
@@ -91,6 +92,7 @@ int main(int argc, char** argv)
                                                                                          response::Value(response::Type::Map))
                                                                                  .get())
                                  << std::endl;
+               }
        }
        catch (const std::runtime_error& ex)
        {

DHAT

Branch/Commit GMax (instrs) End (instrs) Total bytes
daecf27 6,334,065 312,692,430 8,166,830
bd725ac 7,615,736 699,347,168 10,489,271
Difference +36.94% +28.25% +28.43%

parser-tweaks daecf27

Highest consumer path, the biggest source is graphqlpeg:


▼ AP 1/1 (2 children) {
    Total:     8,166,830 bytes (100%, 26,117.77/Minstr) in 88,453 blocks (100%, 282.88/Minstr), avg size 92.33 bytes, avg lifetime 1,525,957.39 instrs (0.49% of program duration)
  ├─▼ AP 1.1/2 (10 children) {
  │     Total:     8,013,934 bytes (98.13%, 25,628.81/Minstr) in 88,248 blocks (99.77%, 282.22/Minstr), avg size 90.81 bytes, avg lifetime 1,511,853.03 instrs (0.48% of program duration)
  │   ├─▶ AP 1.1.1/10 (27 children) {
  │   │     Total:     5,081,600 bytes (62.22%, 16,251.11/Minstr) in 39,700 blocks (44.88%, 126.96/Minstr), avg size 128 bytes, avg lifetime 318,113.36 instrs (0.1% of program duration)
  │   │     Allocated at {
  │   │       ^1: 0x4839E23: operator new(unsigned long)
  │   │       #2: 0x3DFD96: std::_MakeUniq<graphql::peg::ast_node>::__single_object std::make_unique<graphql::peg::ast_node>() (unique_ptr.h:857)
  │   │       #3: 0x3DEF3F: tao::graphqlpeg::parse_tree::internal::state<graphql::peg::ast_node>::emplace_back() (parse_tree.hpp:175)
  │   │     }
  │   │   }
  │   ├── AP 1.1.2/10 {
  │   │     Total:     993,670 bytes (12.17%, 3,177.79/Minstr)
  │   │     Allocated at {
  │   │       [101 insignificant]
  │   │     }
  │   │   }
  │   ├─▶ AP 1.1.3/10 (2 children) {
  │   │     Total:     453,600 bytes (5.55%, 1,450.63/Minstr) in 900 blocks (1.02%, 2.88/Minstr), avg size 504 bytes, avg lifetime 56,523.02 instrs (0.02% of program duration)
  │   │     Allocated at {
  │   │       ^1: 0x4839E23: operator new(unsigned long)
  │   │       #2: 0x2CF150: __gnu_cxx::new_allocator<graphql::service::FragmentDirectives>::allocate(unsigned long, void const*) (new_allocator.h:114)
  │   │       #3: 0x2CCFD9: std::allocator_traits<std::allocator<graphql::service::FragmentDirectives> >::allocate(std::allocator<graphql::service::FragmentDirectives>&, unsigned long) (alloc_traits.h:444)
  │   │       #4: 0x2CAA17: std::_Deque_base<graphql::service::FragmentDirectives, std::allocator<graphql::service::FragmentDirectives> >::_M_allocate_node() (stl_deque.h:620)
  │   │       #5: 0x2CA732: std::_Deque_base<graphql::service::FragmentDirectives, std::allocator<graphql::service::FragmentDirectives> >::_M_create_nodes(graphql::service::FragmentDirectives**, graphql::service::FragmentDirectives**) (stl_deque.h:745)
  │   │       #6: 0x2C6B23: std::_Deque_base<graphql::service::FragmentDirectives, std::allocator<graphql::service::FragmentDirectives> >::_M_initialize_map(unsigned long) (stl_deque.h:719)
  │   │       #7: 0x2C2231: std::_Deque_base<graphql::service::FragmentDirectives, std::allocator<graphql::service::FragmentDirectives> >::_Deque_base() (stl_deque.h:510)
  │   │       #8: 0x2BC551: std::deque<graphql::service::FragmentDirectives, std::allocator<graphql::service::FragmentDirectives> >::deque() (stl_deque.h:915)
  │   │       #9: 0x2B670D: std::stack<graphql::service::FragmentDirectives, std::deque<graphql::service::FragmentDirectives, std::allocator<graphql::service::FragmentDirectives> > >::stack<std::deque<graphql::service::FragmentDirectives, std::allocator<graphql::service::FragmentDirectives> >, void>() (stl_stack.h:157)
  │   │       #10: 0x28B484: graphql::service::SelectionVisitor::SelectionVisitor(graphql::service::SelectionSetParams const&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::service::Fragment, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, graphql::service::Fragment> > > const&, graphql::response::Value const&, std::unordered_set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::vector<std::pair<std::basic_string_view<char, std::char_traits<char> >, std::function<std::future<graphql::response::Value> (graphql::service::ResolverParams&&)> >, std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> >, std::function<std::future<graphql::response::Value> (graphql::service::ResolverParams&&)> > > > const&) (GraphQLService.cpp:797)
  │   │       #11: 0x28E6BF: graphql::service::Object::resolve(graphql::service::SelectionSetParams const&, graphql::peg::ast_node const&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::service::Fragment, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, graphql::service::Fragment> > > const&, graphql::response::Value const&) const (GraphQLService.cpp:1110)
  │   │     }
  │   │   }
  │   ├── AP 1.1.4/10 {
  │   │     Total:     396,000 bytes (4.85%, 1,266.42/Minstr) in 5,500 blocks (6.22%, 17.59/Minstr), avg size 72 bytes, avg lifetime 178,984.23 instrs (0.06% of program duration)
  │   │     Allocated at {
  │   │       ^1: 0x4839E23: operator new(unsigned long)
  │   │       #2: 0x3C8B91: __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > >, std::allocator<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) (new_allocator.h:114)
  │   │       #3: 0x3C8282: std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > >, std::allocator<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > >, std::allocator<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) (alloc_traits.h:444)
  │   │       #4: 0x3C6DBD: std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > >, std::allocator<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > >, std::allocator<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > >, std::allocator<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >, (__gnu_cxx::_Lock_policy)2> >&) (allocated_ptr.h:97)
  │   │       #5: 0x3C56DB: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > >, std::allocator<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >>(std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > >*&, std::_Sp_alloc_shared_tag<std::allocator<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > > >) (shared_ptr_base.h:677)
  │   │       #6: 0x3C4007: std::__shared_ptr<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > >, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >>(std::_Sp_alloc_shared_tag<std::allocator<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > > >) (shared_ptr_base.h:1344)
  │   │       #7: 0x3C23F8: std::shared_ptr<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >::shared_ptr<std::allocator<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >>(std::_Sp_alloc_shared_tag<std::allocator<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > > >) (shared_ptr.h:359)
  │   │       #8: 0x3BFC9B: std::shared_ptr<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > > std::allocate_shared<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > >, std::allocator<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > >>(std::allocator<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > > const&) (shared_ptr.h:702)
  │   │       #9: 0x3BC20A: std::shared_ptr<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > > > std::make_shared<std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > >>() (shared_ptr.h:718)
  │   │       #10: 0x3BA27D: graphql::response::MapData::MapData() (GraphQLResponse.cpp:310)
  │   │       #11: 0x3BDFFF: std::_MakeUniq<graphql::response::MapData>::__single_object std::make_unique<graphql::response::MapData>() (unique_ptr.h:857)
  │   │       #12: 0x3B69A9: graphql::response::Value::Value(graphql::response::Type) (GraphQLResponse.cpp:733)
  │   │     }
  │   │   }
  │   ├─▶ AP 1.1.5/10 (1 children) {
  │   │     Total:     220,000 bytes (2.69%, 703.57/Minstr) in 5,500 blocks (6.22%, 17.59/Minstr), avg size 40 bytes, avg lifetime 180,717.23 instrs (0.06% of program duration)
  │   │     Allocated at {
  │   │       ^1: 0x4839E23: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_dhat-amd64-linux.so)
  │   │       #2: 0x3BDFF0: std::_MakeUniq<graphql::response::MapData>::__single_object std::make_unique<graphql::response::MapData>() (unique_ptr.h:857)
  │   │       #3: 0x3B69A9: graphql::response::Value::Value(graphql::response::Type) (GraphQLResponse.cpp:733)
  │   │     }
  │   │   }
  │   ├── AP 1.1.6/10 {
  │   │     Total:     220,000 bytes (2.69%, 703.57/Minstr) in 5,500 blocks (6.22%, 17.59/Minstr), avg size 40 bytes, avg lifetime 180,393.23 instrs (0.06% of program duration)
  │   │     Allocated at {
  │   │       ^1: 0x4839E23: operator new(unsigned long)
  │   │       #2: 0x3C8A43: __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > >, std::allocator<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > > >, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) (new_allocator.h:114)
  │   │       #3: 0x3C8130: std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > >, std::allocator<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > > >, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > >, std::allocator<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > > >, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) (alloc_traits.h:444)
  │   │       #4: 0x3C6B7B: std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > >, std::allocator<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > > >, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > >, std::allocator<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > > >, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > >, std::allocator<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > > >, (__gnu_cxx::_Lock_policy)2> >&) (allocated_ptr.h:97)
  │   │       #5: 0x3C559B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > >, std::allocator<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > > >>(std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > >*&, std::_Sp_alloc_shared_tag<std::allocator<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > > > >) (shared_ptr_base.h:677)
  │   │       #6: 0x3C3FB3: std::__shared_ptr<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > >, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > > >>(std::_Sp_alloc_shared_tag<std::allocator<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > > > >) (shared_ptr_base.h:1344)
  │   │       #7: 0x3C23AE: std::shared_ptr<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > > >::shared_ptr<std::allocator<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > > >>(std::_Sp_alloc_shared_tag<std::allocator<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > > > >) (shared_ptr.h:359)
  │   │       #8: 0x3BFC2F: std::shared_ptr<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > > > std::allocate_shared<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > >, std::allocator<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > > >>(std::allocator<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > > > const&) (shared_ptr.h:702)
  │   │       #9: 0x3BC180: std::shared_ptr<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > > > std::make_shared<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, graphql::response::Value> > >>() (shared_ptr.h:718)
  │   │       #10: 0x3BA26D: graphql::response::MapData::MapData() (GraphQLResponse.cpp:310)
  │   │       #11: 0x3BDFFF: std::_MakeUniq<graphql::response::MapData>::__single_object std::make_unique<graphql::response::MapData>() (unique_ptr.h:857)
  │   │       #12: 0x3B69A9: graphql::response::Value::Value(graphql::response::Type) (GraphQLResponse.cpp:733)
  │   │     }
  │   │   }
  │   ├─▶ AP 1.1.7/10 (2 children) {
  │   │     Total:     215,464 bytes (2.64%, 689.06/Minstr) in 2,380 blocks (2.69%, 7.61/Minstr), avg size 90.53 bytes, avg lifetime 6,172,229.42 instrs (1.97% of program duration)
  │   │     Allocated at {
  │   │       ^1: 0x4839E23: operator new(unsigned long)
  │   │       #2: 0x21D0E5: __gnu_cxx::new_allocator<std::__detail::_Hash_node_base*>::allocate(unsigned long, void const*) (new_allocator.h:114)
  │   │       #3: 0x20C954: std::allocator_traits<std::allocator<std::__detail::_Hash_node_base*> >::allocate(std::allocator<std::__detail::_Hash_node_base*>&, unsigned long) (alloc_traits.h:444)
  │   │     }
  │   │   }
  │   ├─▶ AP 1.1.8/10 (2 children) {
  │   │     Total:     212,000 bytes (2.6%, 677.98/Minstr) in 11,500 blocks (13%, 36.78/Minstr), avg size 18.43 bytes, avg lifetime 347,942.45 instrs (0.11% of program duration)
  │   │     At t-gmax: 200 bytes (0.17%) in 16 blocks (3.02%), avg size 12.5 bytes
  │   │     At t-end:  0 bytes (0%) in 0 blocks (0%), avg size 0 bytes
  │   │     Reads:     1,415,200 bytes (8.83%, 4,525.85/Minstr), 6.68/byte
  │   │     Writes:    1,219,200 bytes (5.95%, 3,899.04/Minstr), 5.75/byte
  │   │     Allocated at {
  │   │       ^1: 0x4839E23: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_dhat-amd64-linux.so)
  │   │       #2: 0x3E41FF: __gnu_cxx::new_allocator<std::unique_ptr<graphql::peg::ast_node, std::default_delete<graphql::peg::ast_node> > >::allocate(unsigned long, void const*) (new_allocator.h:114)
  │   │       #3: 0x3E3043: std::allocator_traits<std::allocator<std::unique_ptr<graphql::peg::ast_node, std::default_delete<graphql::peg::ast_node> > > >::allocate(std::allocator<std::unique_ptr<graphql::peg::ast_node, std::default_delete<graphql::peg::ast_node> > >&, unsigned long) (alloc_traits.h:444)
  │   │       #4: 0x3E25C3: std::_Vector_base<std::unique_ptr<graphql::peg::ast_node, std::default_delete<graphql::peg::ast_node> >, std::allocator<std::unique_ptr<graphql::peg::ast_node, std::default_delete<graphql::peg::ast_node> > > >::_M_allocate(unsigned long) (stl_vector.h:343)
  │   │       #5: 0x3E11A0: void std::vector<std::unique_ptr<graphql::peg::ast_node, std::default_delete<graphql::peg::ast_node> >, std::allocator<std::unique_ptr<graphql::peg::ast_node, std::default_delete<graphql::peg::ast_node> > > >::_M_realloc_insert<std::unique_ptr<graphql::peg::ast_node, std::default_delete<graphql::peg::ast_node> > >(__gnu_cxx::__normal_iterator<std::unique_ptr<graphql::peg::ast_node, std::default_delete<graphql::peg::ast_node> >*, std::vector<std::unique_ptr<graphql::peg::ast_node, std::default_delete<graphql::peg::ast_node> >, std::allocator<std::unique_ptr<graphql::peg::ast_node, std::default_delete<graphql::peg::ast_node> > > > >, std::unique_ptr<graphql::peg::ast_node, std::default_delete<graphql::peg::ast_node> >&&) (vector.tcc:440)
  │   │       #6: 0x3DFE67: std::unique_ptr<graphql::peg::ast_node, std::default_delete<graphql::peg::ast_node> >& std::vector<std::unique_ptr<graphql::peg::ast_node, std::default_delete<graphql::peg::ast_node> >, std::allocator<std::unique_ptr<graphql::peg::ast_node, std::default_delete<graphql::peg::ast_node> > > >::emplace_back<std::unique_ptr<graphql::peg::ast_node, std::default_delete<graphql::peg::ast_node> > >(std::unique_ptr<graphql::peg::ast_node, std::default_delete<graphql::peg::ast_node> >&&) (vector.tcc:121)

master bd725ac

You can see 18% is wasted on field_path (stl_vector + variant makes it clear), that comes from SelectionSetParams constructor (graphql::service::SelectionSetParams::SelectionSetParams(graphql::service::SelectionSetParams const&) (GraphQLService.h:139)).


▼ AP 1/1 (3 children) {
    Total:     10,489,271 bytes (100%, 14,998.66/Minstr) in 98,231 blocks (100%, 140.46/Minstr), avg size 106.78 bytes, avg lifetime 5,431,052.27 instrs (0.78% of program duration)
  ├─▼ AP 1.1/3 (25 children) {
  │     Total:     10,029,175 bytes (95.61%, 14,340.77/Minstr) in 97,226 blocks (98.98%, 139.02/Minstr), avg size 103.15 bytes, avg lifetime 5,450,952.8 instrs (0.78% of program duration)
  │   ├─▼ AP 1.1.1/25 (2 children) {
  │   │     Total:     1,968,000 bytes (18.76%, 2,814.05/Minstr) in 22,500 blocks (22.91%, 32.17/Minstr), avg size 87.47 bytes, avg lifetime 127,205.04 instrs (0.02% of program duration)
  │   │     Allocated at {
  │   │       ^1: 0x4839E23: operator new(unsigned long)
  │   │       #2: 0x16E950: __gnu_cxx::new_allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >::allocate(unsigned long, void const*) (new_allocator.h:114)
  │   │       #3: 0x16B8DF: std::allocator_traits<std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::allocate(std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >&, unsigned long) (alloc_traits.h:444)
  │   │       #4: 0x1677FB: std::_Vector_base<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::_M_allocate(unsigned long) (stl_vector.h:343)
  │   │     }
  │   │   }
  │   │   ├─▼ AP 1.1.1.1/2 (3 children) {
  │   │   │     Total:     1,356,000 bytes (12.93%, 1,938.95/Minstr) in 17,500 blocks (17.82%, 25.02/Minstr), avg size 77.49 bytes, avg lifetime 134,440.04 instrs (0.02% of program duration)
  │   │   │     Allocated at {
  │   │   │       ^1: 0x4839E23: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_dhat-amd64-linux.so)
  │   │   │       ^2: 0x16E950: __gnu_cxx::new_allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >::allocate(unsigned long, void const*) (new_allocator.h:114)
  │   │   │       ^3: 0x16B8DF: std::allocator_traits<std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::allocate(std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >&, unsigned long) (alloc_traits.h:444)
  │   │   │       ^4: 0x1677FB: std::_Vector_base<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::_M_allocate(unsigned long) (stl_vector.h:343)
  │   │   │       #5: 0x16289A: std::_Vector_base<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::_M_create_storage(unsigned long) (stl_vector.h:358)
  │   │   │       #6: 0x15D044: std::_Vector_base<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::_Vector_base(unsigned long, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > const&) (stl_vector.h:302)
  │   │   │       #7: 0x156E1A: std::vector<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::vector(std::vector<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > > const&) (stl_vector.h:552)
  │   │   │     }
  │   │   │   }
  │   │   │   ├─▶ AP 1.1.1.1.1/3 (3 children) {
  │   │   │   │     Total:     804,000 bytes (7.66%, 1,149.64/Minstr) in 9,500 blocks (9.67%, 13.58/Minstr), avg size 84.63 bytes, avg lifetime 214,990.61 instrs (0.03% of program duration)
  │   │   │   │     Allocated at {
  │   │   │   │       ^1: 0x4839E23: operator new(unsigned long)
  │   │   │   │       ^2: 0x16E950: __gnu_cxx::new_allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >::allocate(unsigned long, void const*) (new_allocator.h:114)
  │   │   │   │       ^3: 0x16B8DF: std::allocator_traits<std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::allocate(std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >&, unsigned long) (alloc_traits.h:444)
  │   │   │   │       ^4: 0x1677FB: std::_Vector_base<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::_M_allocate(unsigned long) (stl_vector.h:343)
  │   │   │   │       ^5: 0x16289A: std::_Vector_base<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::_M_create_storage(unsigned long) (stl_vector.h:358)
  │   │   │   │       ^6: 0x15D044: std::_Vector_base<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::_Vector_base(unsigned long, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > const&) (stl_vector.h:302)
  │   │   │   │       ^7: 0x156E1A: std::vector<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::vector(std::vector<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > > const&) (stl_vector.h:552)
  │   │   │   │       #8: 0x19C3D6: graphql::service::SelectionSetParams::SelectionSetParams(graphql::service::SelectionSetParams const&) (GraphQLService.h:139)
  │   │   │   │     }
  │   │   │   │   }
  │   │   │   ├── AP 1.1.1.1.2/3 {
  │   │   │   │     Total:     276,000 bytes (2.63%, 394.65/Minstr) in 4,000 blocks (4.07%, 5.72/Minstr), avg size 69 bytes, avg lifetime 75,226.88 instrs (0.01% of program duration)
  │   │   │   │     Allocated at {
  │   │   │   │       ^1: 0x4839E23: operator new(unsigned long)
  │   │   │   │       ^2: 0x16E950: __gnu_cxx::new_allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >::allocate(unsigned long, void const*) (new_allocator.h:114)
  │   │   │   │       ^3: 0x16B8DF: std::allocator_traits<std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::allocate(std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >&, unsigned long) (alloc_traits.h:444)
  │   │   │   │       ^4: 0x1677FB: std::_Vector_base<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::_M_allocate(unsigned long) (stl_vector.h:343)
  │   │   │   │       ^5: 0x16289A: std::_Vector_base<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::_M_create_storage(unsigned long) (stl_vector.h:358)
  │   │   │   │       ^6: 0x15D044: std::_Vector_base<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::_Vector_base(unsigned long, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > const&) (stl_vector.h:302)
  │   │   │   │       ^7: 0x156E1A: std::vector<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::vector(std::vector<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > > const&) (stl_vector.h:552)
  │   │   │   │       #8: 0x2DFBAD: graphql::service::SelectionVisitor::SelectionVisitor(graphql::service::SelectionSetParams const&, std::unordered_map<std::basic_string_view<char, std::char_traits<char> >, graphql::service::Fragment, std::hash<std::basic_string_view<char, std::char_traits<char> > >, std::equal_to<std::basic_string_view<char, std::char_traits<char> > >, std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> > const, graphql::service::Fragment> > > const&, graphql::response::Value const&, std::unordered_set<std::basic_string_view<char, std::char_traits<char> >, std::hash<std::basic_string_view<char, std::char_traits<char> > >, std::equal_to<std::basic_string_view<char, std::char_traits<char> > >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&, std::vector<std::pair<std::basic_string_view<char, std::char_traits<char> >, std::function<std::future<graphql::service::ResolverResult> (graphql::service::ResolverParams&&)> >, std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> >, std::function<std::future<graphql::service::ResolverResult> (graphql::service::ResolverParams&&)> > > > const&) (GraphQLService.cpp:895)
  │   │   │   │       #9: 0x2E30DD: graphql::service::Object::resolve(graphql::service::SelectionSetParams const&, graphql::peg::ast_node const&, std::unordered_map<std::basic_string_view<char, std::char_traits<char> >, graphql::service::Fragment, std::hash<std::basic_string_view<char, std::char_traits<char> > >, std::equal_to<std::basic_string_view<char, std::char_traits<char> > >, std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> > const, graphql::service::Fragment> > > const&, graphql::response::Value const&) const (GraphQLService.cpp:1213)
  │   │   │   │       #10: 0x2DF9F8: graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}::operator()(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&) const (GraphQLService.cpp:830)
  │   │   │   │       #11: 0x308D58: graphql::service::ResolverResult std::__invoke_impl<graphql::service::ResolverResult, graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams>(std::__invoke_other, graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}&&, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&) (invoke.h:60)
  │   │   │   │       #12: 0x30866B: std::__invoke_result<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams>::type std::__invoke<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams>(std::__invoke_result&&, (graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}&&)...) (invoke.h:96)
  │   │   │   │     }
  │   │   │   │   }
  │   │   │   └── AP 1.1.1.1.3/3 {
  │   │   │         Total:     276,000 bytes (2.63%, 394.65/Minstr) in 4,000 blocks (4.07%, 5.72/Minstr), avg size 69 bytes, avg lifetime 2,345.63 instrs (0% of program duration)
  │   │   │         Allocated at {
  │   │   │           ^1: 0x4839E23: operator new(unsigned long)
  │   │   │           ^2: 0x16E950: __gnu_cxx::new_allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >::allocate(unsigned long, void const*) (new_allocator.h:114)
  │   │   │           ^3: 0x16B8DF: std::allocator_traits<std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::allocate(std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >&, unsigned long) (alloc_traits.h:444)
  │   │   │           ^4: 0x1677FB: std::_Vector_base<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::_M_allocate(unsigned long) (stl_vector.h:343)
  │   │   │           ^5: 0x16289A: std::_Vector_base<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::_M_create_storage(unsigned long) (stl_vector.h:358)
  │   │   │           ^6: 0x15D044: std::_Vector_base<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::_Vector_base(unsigned long, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > const&) (stl_vector.h:302)
  │   │   │           ^7: 0x156E1A: std::vector<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::vector(std::vector<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > > const&) (stl_vector.h:552)
  │   │   │           #8: 0x2E06F5: graphql::service::SelectionVisitor::visitField(graphql::peg::ast_node const&) (GraphQLService.cpp:1004)
  │   │   │           #9: 0x2DFDE6: graphql::service::SelectionVisitor::visit(graphql::peg::ast_node const&) (GraphQLService.cpp:913)
  │   │   │           #10: 0x2E3101: graphql::service::Object::resolve(graphql::service::SelectionSetParams const&, graphql::peg::ast_node const&, std::unordered_map<std::basic_string_view<char, std::char_traits<char> >, graphql::service::Fragment, std::hash<std::basic_string_view<char, std::char_traits<char> > >, std::equal_to<std::basic_string_view<char, std::char_traits<char> > >, std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> > const, graphql::service::Fragment> > > const&, graphql::response::Value const&) const (GraphQLService.cpp:1215)
  │   │   │           #11: 0x2DF9F8: graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}::operator()(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&) const (GraphQLService.cpp:830)
  │   │   │           #12: 0x308D58: graphql::service::ResolverResult std::__invoke_impl<graphql::service::ResolverResult, graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams>(std::__invoke_other, graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}&&, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&) (invoke.h:60)
  │   │   │         }
  │   │   │       }
  │   │   └─▼ AP 1.1.1.2/2 (2 children) {
  │   │         Total:     612,000 bytes (5.83%, 875.1/Minstr) in 5,000 blocks (5.09%, 7.15/Minstr), avg size 122.4 bytes, avg lifetime 101,882.54 instrs (0.01% of program duration)
  │   │         Allocated at {
  │   │           ^1: 0x4839E23: operator new(unsigned long) 
  │   │           ^2: 0x16E950: __gnu_cxx::new_allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >::allocate(unsigned long, void const*) (new_allocator.h:114)
  │   │           ^3: 0x16B8DF: std::allocator_traits<std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::allocate(std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >&, unsigned long) (alloc_traits.h:444)
  │   │           ^4: 0x1677FB: std::_Vector_base<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::_M_allocate(unsigned long) (stl_vector.h:343)
  │   │           #5: 0x1AE830: void std::vector<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::_M_realloc_insert<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >(__gnu_cxx::__normal_iterator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>*, std::vector<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > > >, std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>&&) (vector.tcc:440)
  │   │           #6: 0x1A6CA1: std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>& std::vector<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::emplace_back<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >(std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>&&) (vector.tcc:121)
  │   │           #7: 0x1A063F: std::vector<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::push_back(std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>&&) (stl_vector.h:1201)
  │   │         }
  │   │       }
  │   │       ├─▼ AP 1.1.1.2.1/2 (2 children) {
  │   │       │     Total:     564,000 bytes (5.38%, 806.47/Minstr) in 4,500 blocks (4.58%, 6.43/Minstr), avg size 125.33 bytes, avg lifetime 30,666.06 instrs (0% of program duration)
  │   │       │     Allocated at {
  │   │       │       ^1: 0x4839E23: operator new(unsigned long)
  │   │       │       ^2: 0x16E950: __gnu_cxx::new_allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >::allocate(unsigned long, void const*) (new_allocator.h:114)
  │   │       │       ^3: 0x16B8DF: std::allocator_traits<std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::allocate(std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >&, unsigned long) (alloc_traits.h:444)
  │   │       │       ^4: 0x1677FB: std::_Vector_base<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::_M_allocate(unsigned long) (stl_vector.h:343)
  │   │       │       ^5: 0x1AE830: void std::vector<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::_M_realloc_insert<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >(__gnu_cxx::__normal_iterator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>*, std::vector<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > > >, std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>&&) (vector.tcc:440)
  │   │       │       ^6: 0x1A6CA1: std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>& std::vector<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::emplace_back<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >(std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>&&) (vector.tcc:121)
  │   │       │       ^7: 0x1A063F: std::vector<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::push_back(std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>&&) (stl_vector.h:1201)
  │   │       │       #8: 0x2E0727: graphql::service::SelectionVisitor::visitField(graphql::peg::ast_node const&) (GraphQLService.cpp:1006)
  │   │       │       #9: 0x2DFDE6: graphql::service::SelectionVisitor::visit(graphql::peg::ast_node const&) (GraphQLService.cpp:913)
  │   │       │       #10: 0x2E3101: graphql::service::Object::resolve(graphql::service::SelectionSetParams const&, graphql::peg::ast_node const&, std::unordered_map<std::basic_string_view<char, std::char_traits<char> >, graphql::service::Fragment, std::hash<std::basic_string_view<char, std::char_traits<char> > >, std::equal_to<std::basic_string_view<char, std::char_traits<char> > >, std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> > const, graphql::service::Fragment> > > const&, graphql::response::Value const&) const (GraphQLService.cpp:1215)
  │   │       │     }
  │   │       │   }
  │   │       │   ├── AP 1.1.1.2.1.1/2 {
  │   │       │   │     Total:     552,000 bytes (5.26%, 789.31/Minstr) in 4,000 blocks (4.07%, 5.72/Minstr), avg size 138 bytes, avg lifetime 29,027 instrs (0% of program duration)
  │   │       │   │     Allocated at {
  │   │       │   │       ^1: 0x4839E23: operator new(unsigned long)
  │   │       │   │       ^2: 0x16E950: __gnu_cxx::new_allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >::allocate(unsigned long, void const*) (new_allocator.h:114)
  │   │       │   │       ^3: 0x16B8DF: std::allocator_traits<std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::allocate(std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >&, unsigned long) (alloc_traits.h:444)
  │   │       │   │       ^4: 0x1677FB: std::_Vector_base<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::_M_allocate(unsigned long) (stl_vector.h:343)
  │   │       │   │       ^5: 0x1AE830: void std::vector<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::_M_realloc_insert<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >(__gnu_cxx::__normal_iterator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>*, std::vector<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > > >, std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>&&) (vector.tcc:440)
  │   │       │   │       ^6: 0x1A6CA1: std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>& std::vector<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::emplace_back<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> >(std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>&&) (vector.tcc:121)
  │   │       │   │       ^7: 0x1A063F: std::vector<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>, std::allocator<std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long> > >::push_back(std::variant<std::basic_string_view<char, std::char_traits<char> >, unsigned long>&&) (stl_vector.h:1201)
  │   │       │   │       ^8: 0x2E0727: graphql::service::SelectionVisitor::visitField(graphql::peg::ast_node const&) (GraphQLService.cpp:1006)
  │   │       │   │       ^9: 0x2DFDE6: graphql::service::SelectionVisitor::visit(graphql::peg::ast_node const&) (GraphQLService.cpp:913)
  │   │       │   │       ^10: 0x2E3101: graphql::service::Object::resolve(graphql::service::SelectionSetParams const&, graphql::peg::ast_node const&, std::unordered_map<std::basic_string_view<char, std::char_traits<char> >, graphql::service::Fragment, std::hash<std::basic_string_view<char, std::char_traits<char> > >, std::equal_to<std::basic_string_view<char, std::char_traits<char> > >, std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> > const, graphql::service::Fragment> > > const&, graphql::response::Value const&) const (GraphQLService.cpp:1215)
  │   │       │   │       #11: 0x2DF9F8: graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}::operator()(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&) const (GraphQLService.cpp:830)
  │   │       │   │       #12: 0x308D58: graphql::service::ResolverResult std::__invoke_impl<graphql::service::ResolverResult, graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams>(std::__invoke_other, graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}&&, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&) (invoke.h:60)
  │   ├─▼ AP 1.1.3/25 (2 children) {
  │   │     Total:     756,000 bytes (7.21%, 1,081.01/Minstr) in 4,500 blocks (4.58%, 6.43/Minstr), avg size 168 bytes, avg lifetime 63,480.14 instrs (0.01% of program duration)
  │   │     Allocated at {
  │   │       ^1: 0x4839E23: operator new(unsigned long)
  │   │       #2: 0x32CA50: __gnu_cxx::new_allocator<graphql::service::FragmentDirectives>::allocate(unsigned long, void const*) (new_allocator.h:114)
  │   │       #3: 0x3287DF: std::allocator_traits<std::allocator<graphql::service::FragmentDirectives> >::allocate(std::allocator<graphql::service::FragmentDirectives>&, unsigned long) (alloc_traits.h:444)
  │   │       #4: 0x32459B: std::_Vector_base<graphql::service::FragmentDirectives, std::allocator<graphql::service::FragmentDirectives> >::_M_allocate(unsigned long) (stl_vector.h:343)
  │   │       #5: 0x31E928: void std::vector<graphql::service::FragmentDirectives, std::allocator<graphql::service::FragmentDirectives> >::_M_realloc_insert<graphql::service::FragmentDirectives>(__gnu_cxx::__normal_iterator<graphql::service::FragmentDirectives*, std::vector<graphql::service::FragmentDirectives, std::allocator<graphql::service::FragmentDirectives> > >, graphql::service::FragmentDirectives&&) (vector.tcc:440)
  │   │       #6: 0x318A68: graphql::service::FragmentDirectives& std::vector<graphql::service::FragmentDirectives, std::allocator<graphql::service::FragmentDirectives> >::emplace_back<graphql::service::FragmentDirectives>(graphql::service::FragmentDirectives&&) (vector.tcc:121)
  │   │       #7: 0x311ABD: std::vector<graphql::service::FragmentDirectives, std::allocator<graphql::service::FragmentDirectives> >::push_back(graphql::service::FragmentDirectives&&) (stl_vector.h:1201)
  │   │       #8: 0x2DFCA5: graphql::service::SelectionVisitor::SelectionVisitor(graphql::service::SelectionSetParams const&, std::unordered_map<std::basic_string_view<char, std::char_traits<char> >, graphql::service::Fragment, std::hash<std::basic_string_view<char, std::char_traits<char> > >, std::equal_to<std::basic_string_view<char, std::char_traits<char> > >, std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> > const, graphql::service::Fragment> > > const&, graphql::response::Value const&, std::unordered_set<std::basic_string_view<char, std::char_traits<char> >, std::hash<std::basic_string_view<char, std::char_traits<char> > >, std::equal_to<std::basic_string_view<char, std::char_traits<char> > >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&, std::vector<std::pair<std::basic_string_view<char, std::char_traits<char> >, std::function<std::future<graphql::service::ResolverResult> (graphql::service::ResolverParams&&)> >, std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> >, std::function<std::future<graphql::service::ResolverResult> (graphql::service::ResolverParams&&)> > > > const&) (GraphQLService.cpp:897)
  │   │       #9: 0x2E30DD: graphql::service::Object::resolve(graphql::service::SelectionSetParams const&, graphql::peg::ast_node const&, std::unordered_map<std::basic_string_view<char, std::char_traits<char> >, graphql::service::Fragment, std::hash<std::basic_string_view<char, std::char_traits<char> > >, std::equal_to<std::basic_string_view<char, std::char_traits<char> > >, std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> > const, graphql::service::Fragment> > > const&, graphql::response::Value const&) const (GraphQLService.cpp:1213)
  │   │     }
  │   │   }
  │   │   ├── AP 1.1.3.1/2 {
  │   │   │     Total:     672,000 bytes (6.41%, 960.9/Minstr) in 4,000 blocks (4.07%, 5.72/Minstr), avg size 168 bytes, avg lifetime 61,708.63 instrs (0.01% of program duration)
  │   │   │     Allocated at {
  │   │   │       ^1: 0x4839E23: operator new(unsigned long)
  │   │   │       ^2: 0x32CA50: __gnu_cxx::new_allocator<graphql::service::FragmentDirectives>::allocate(unsigned long, void const*) (new_allocator.h:114)
  │   │   │       ^3: 0x3287DF: std::allocator_traits<std::allocator<graphql::service::FragmentDirectives> >::allocate(std::allocator<graphql::service::FragmentDirectives>&, unsigned long) (alloc_traits.h:444)
  │   │   │       ^4: 0x32459B: std::_Vector_base<graphql::service::FragmentDirectives, std::allocator<graphql::service::FragmentDirectives> >::_M_allocate(unsigned long) (stl_vector.h:343)
  │   │   │       ^5: 0x31E928: void std::vector<graphql::service::FragmentDirectives, std::allocator<graphql::service::FragmentDirectives> >::_M_realloc_insert<graphql::service::FragmentDirectives>(__gnu_cxx::__normal_iterator<graphql::service::FragmentDirectives*, std::vector<graphql::service::FragmentDirectives, std::allocator<graphql::service::FragmentDirectives> > >, graphql::service::FragmentDirectives&&) (vector.tcc:440)
  │   │   │       ^6: 0x318A68: graphql::service::FragmentDirectives& std::vector<graphql::service::FragmentDirectives, std::allocator<graphql::service::FragmentDirectives> >::emplace_back<graphql::service::FragmentDirectives>(graphql::service::FragmentDirectives&&) (vector.tcc:121)
  │   │   │       ^7: 0x311ABD: std::vector<graphql::service::FragmentDirectives, std::allocator<graphql::service::FragmentDirectives> >::push_back(graphql::service::FragmentDirectives&&) (stl_vector.h:1201)
  │   │   │       ^8: 0x2DFCA5: graphql::service::SelectionVisitor::SelectionVisitor(graphql::service::SelectionSetParams const&, std::unordered_map<std::basic_string_view<char, std::char_traits<char> >, graphql::service::Fragment, std::hash<std::basic_string_view<char, std::char_traits<char> > >, std::equal_to<std::basic_string_view<char, std::char_traits<char> > >, std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> > const, graphql::service::Fragment> > > const&, graphql::response::Value const&, std::unordered_set<std::basic_string_view<char, std::char_traits<char> >, std::hash<std::basic_string_view<char, std::char_traits<char> > >, std::equal_to<std::basic_string_view<char, std::char_traits<char> > >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&, std::vector<std::pair<std::basic_string_view<char, std::char_traits<char> >, std::function<std::future<graphql::service::ResolverResult> (graphql::service::ResolverParams&&)> >, std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> >, std::function<std::future<graphql::service::ResolverResult> (graphql::service::ResolverParams&&)> > > > const&) (GraphQLService.cpp:897)
  │   │   │       ^9: 0x2E30DD: graphql::service::Object::resolve(graphql::service::SelectionSetParams const&, graphql::peg::ast_node const&, std::unordered_map<std::basic_string_view<char, std::char_traits<char> >, graphql::service::Fragment, std::hash<std::basic_string_view<char, std::char_traits<char> > >, std::equal_to<std::basic_string_view<char, std::char_traits<char> > >, std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> > const, graphql::service::Fragment> > > const&, graphql::response::Value const&) const (GraphQLService.cpp:1213)
  │   │   │       #10: 0x2DF9F8: graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}::operator()(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&) const (GraphQLService.cpp:830)
  │   │   │       #11: 0x308D58: graphql::service::ResolverResult std::__invoke_impl<graphql::service::ResolverResult, graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams>(std::__invoke_other, graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}&&, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&) (invoke.h:60)
  │   │   │       #12: 0x30866B: std::__invoke_result<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams>::type std::__invoke<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams>(std::__invoke_result&&, (graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}&&)...) (invoke.h:96)
  │   ├── AP 1.1.4/25 {
  │   │     Total:     672,000 bytes (6.41%, 960.9/Minstr) in 2,000 blocks (2.04%, 2.86/Minstr), avg size 336 bytes, avg lifetime 650,920.47 instrs (0.09% of program duration)
  │   │     Allocated at {
  │   │       ^1: 0x4839E23: operator new(unsigned long)
  │   │       #2: 0x2FFD16: __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams> >, graphql::service::ResolverResult>, std::allocator<graphql::service::ResolverResult>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) (new_allocator.h:114)
  │   │       #3: 0x2FE6BC: std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams> >, graphql::service::ResolverResult>, std::allocator<graphql::service::ResolverResult>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::_Sp_counted_ptr_inplace<std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams> >, graphql::service::ResolverResult>, std::allocator<graphql::service::ResolverResult>, (__gnu_cxx::_Lock_policy)2>&, unsigned long) (alloc_traits.h:444)
  │   │       #4: 0x2FBD3F: std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams> >, graphql::service::ResolverResult>, std::allocator<graphql::service::ResolverResult>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams> >, graphql::service::ResolverResult>, std::allocator<graphql::service::ResolverResult>, (__gnu_cxx::_Lock_policy)2> > >(std::__allocated_ptr&) (allocated_ptr.h:97)
  │   │       #5: 0x2FA10F: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams> >, graphql::service::ResolverResult>, std::allocator<graphql::service::ResolverResult>, std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams> >(std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams> >, graphql::service::ResolverResult>*&, std::_Sp_alloc_shared_tag<std::allocator<graphql::service::ResolverResult> >, std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams>&&) (shared_ptr_base.h:677)
  │   │       #6: 0x2F9899: std::__shared_ptr<std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams> >, graphql::service::ResolverResult>, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<graphql::service::ResolverResult>, std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams> >(std::_Sp_alloc_shared_tag<std::allocator<graphql::service::ResolverResult> >, std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams>&&) (shared_ptr_base.h:1344)
  │   │       #7: 0x2F925E: std::shared_ptr<std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams> >, graphql::service::ResolverResult> >::shared_ptr<std::allocator<graphql::service::ResolverResult>, std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams> >(std::_Sp_alloc_shared_tag<std::allocator<graphql::service::ResolverResult> >, std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams>&&) (shared_ptr.h:359)
  │   │       #8: 0x2F7A84: std::shared_ptr<std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams> >, graphql::service::ResolverResult> > std::allocate_shared<std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams> >, graphql::service::ResolverResult>, std::allocator<graphql::service::ResolverResult>, std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams> >(std::allocator<graphql::service::ResolverResult> const&, std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams>&&) (shared_ptr.h:702)
  │   │       #9: 0x2F4416: std::shared_ptr<std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams> >, graphql::service::ResolverResult> > std::make_shared<std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams> >, graphql::service::ResolverResult>, std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams> >(std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams>&&) (shared_ptr.h:718)
  │   │       #10: 0x2EF320: std::shared_ptr<std::__future_base::_State_baseV2> std::__future_base::_S_make_deferred_state<std::thread::_Invoker<std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams> > >(std::thread::_Invoker<std::tuple<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams> >&&) (future:1691)
  │   │       #11: 0x2EB382: std::future<std::__invoke_result<std::decay<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}>::type, std::__invoke_result<graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> > >::type, std::__invoke_result<graphql::service::ResolverParams>::type>::type> std::async<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}, graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >, graphql::service::ResolverParams>(std::launch, std::decay&&, (std::decay<graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)::{lambda(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&)#1}>::type&&)...) (future:1730)
  │   │       #12: 0x2DFAE5: graphql::service::ModifiedResult<graphql::service::Object>::convert(graphql::service::FieldResult<std::shared_ptr<graphql::service::Object> >&&, graphql::service::ResolverParams&&) (GraphQLService.cpp:837)

Massif

Branch/Commit Lowest Peak
daecf27 106,288 121,376
bd725ac 145,552 155,672
Difference +36.94% +28.25%

parser-tweaks daecf27

    KB
118.5^ #                                                                      
     | #   :::::     :::::  ::::::@@@:@@:         ::::::::::@@:::  :: :::     
     | #:::: : ::::::: :::::::  ::@  :@ ::::::::::: : :: : :@ :: :::::: :::: :
     | #: :: : :: : :: :::: ::  ::@  :@ :: :::: ::: : :: : :@ :: :::::: :: :::
     | #: :: : :: : :: :::: ::  ::@  :@ :: :::: ::: : :: : :@ :: :::::: :: :::
     | #: :: : :: : :: :::: ::  ::@  :@ :: :::: ::: : :: : :@ :: :::::: :: :::
     | #: :: : :: : :: :::: ::  ::@  :@ :: :::: ::: : :: : :@ :: :::::: :: :::
     | #: :: : :: : :: :::: ::  ::@  :@ :: :::: ::: : :: : :@ :: :::::: :: :::
     | #: :: : :: : :: :::: ::  ::@  :@ :: :::: ::: : :: : :@ :: :::::: :: :::
     | #: :: : :: : :: :::: ::  ::@  :@ :: :::: ::: : :: : :@ :: :::::: :: :::
     | #: :: : :: : :: :::: ::  ::@  :@ :: :::: ::: : :: : :@ :: :::::: :: :::
     | #: :: : :: : :: :::: ::  ::@  :@ :: :::: ::: : :: : :@ :: :::::: :: :::
     | #: :: : :: : :: :::: ::  ::@  :@ :: :::: ::: : :: : :@ :: :::::: :: :::
     | #: :: : :: : :: :::: ::  ::@  :@ :: :::: ::: : :: : :@ :: :::::: :: :::
     | #: :: : :: : :: :::: ::  ::@  :@ :: :::: ::: : :: : :@ :: :::::: :: :::
     | #: :: : :: : :: :::: ::  ::@  :@ :: :::: ::: : :: : :@ :: :::::: :: :::
     | #: :: : :: : :: :::: ::  ::@  :@ :: :::: ::: : :: : :@ :: :::::: :: :::
     | #: :: : :: : :: :::: ::  ::@  :@ :: :::: ::: : :: : :@ :: :::::: :: :::
     | #: :: : :: : :: :::: ::  ::@  :@ :: :::: ::: : :: : :@ :: :::::: :: :::
     | #: :: : :: : :: :::: ::  ::@  :@ :: :::: ::: : :: : :@ :: :::::: :: :::
   0 +----------------------------------------------------------------------->Mi
     0                                                                   297.0

master bd725ac

    KB
152.0^                                                                    @   
     |#:: :::::::: :::::: ::: :@:: : ::::@::::::@:::::@: ::: @:: ::@: ::::@:::
     |#::@::::::::::::@::::::::@:::::::: @::::::@:::::@::::::@:::::@::::::@:::
     |#::@::::::::::::@::::::::@:::::::: @::::::@:::::@::::::@:::::@::::::@:::
     |#::@::::::::::::@::::::::@:::::::: @::::::@:::::@::::::@:::::@::::::@:::
     |#::@::::::::::::@::::::::@:::::::: @::::::@:::::@::::::@:::::@::::::@:::
     |#::@::::::::::::@::::::::@:::::::: @::::::@:::::@::::::@:::::@::::::@:::
     |#::@::::::::::::@::::::::@:::::::: @::::::@:::::@::::::@:::::@::::::@:::
     |#::@::::::::::::@::::::::@:::::::: @::::::@:::::@::::::@:::::@::::::@:::
     |#::@::::::::::::@::::::::@:::::::: @::::::@:::::@::::::@:::::@::::::@:::
     |#::@::::::::::::@::::::::@:::::::: @::::::@:::::@::::::@:::::@::::::@:::
     |#::@::::::::::::@::::::::@:::::::: @::::::@:::::@::::::@:::::@::::::@:::
     |#::@::::::::::::@::::::::@:::::::: @::::::@:::::@::::::@:::::@::::::@:::
     |#::@::::::::::::@::::::::@:::::::: @::::::@:::::@::::::@:::::@::::::@:::
     |#::@::::::::::::@::::::::@:::::::: @::::::@:::::@::::::@:::::@::::::@:::
     |#::@::::::::::::@::::::::@:::::::: @::::::@:::::@::::::@:::::@::::::@:::
     |#::@::::::::::::@::::::::@:::::::: @::::::@:::::@::::::@:::::@::::::@:::
     |#::@::::::::::::@::::::::@:::::::: @::::::@:::::@::::::@:::::@::::::@:::
     |#::@::::::::::::@::::::::@:::::::: @::::::@:::::@::::::@:::::@::::::@:::
     |#::@::::::::::::@::::::::@:::::::: @::::::@:::::@::::::@:::::@::::::@:::
   0 +----------------------------------------------------------------------->Mi
     0                                                                   662.3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant