diff --git a/results/flamegraph.svg b/results/flamegraph.svg index 8a2e0dd..8ceef27 100644 --- a/results/flamegraph.svg +++ b/results/flamegraph.svg @@ -2,16 +2,16 @@ @@ -28,4 +28,4 @@ function qslSearch(){ else{r.classList.remove('hl');}} if(detail)detail.textContent='Search: '+term; } -]]>QSL Matching-Engine Flame Graph (qsl-bench)flamegraph (software cpu-clock sampling hot-symbol profile) | Linux aarch64 | cpu-clock @ 4000Hz | 19997 samples | 316 stacks | 2026-06-24T23:20:24ZSearch all (19997 cpu-clock samples, 100.00%)allqsl-bench (19997 cpu-clock samples, 100.00%)qsl-bench_start (19997 cpu-clock samples, 100.00%)_start__libc_start_main@@GLIBC_2.34 (19996 cpu-clock samples, 99.99%)__libc_start_main@@GLIBC_2.34__libc_start_call_main (19996 cpu-clock samples, 99.99%)__libc_start_call_mainmain (19980 cpu-clock samples, 99.91%)maincfree@GLIBC_2.17 (48 cpu-clock samples, 0.24%)qsl::engine::MatchingEngine::cancel(unsigned int, unsigned long) (3484 cpu-clock samples, 17.42%)qsl::engine::MatchingEngin..qsl::engine::OrderBook::cancel(unsigned long) (3130 cpu-clock samples, 15.65%)qsl::engine::OrderBook:..decltype(auto) qsl::engine::OrderBook::dispatch_storage<qsl::engine::OrderBook::cancel(unsigned long)::{lambda()#1}, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::IntrusiveStore&)#1}, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::ContiguousStore&)#1}>(qsl::engine::OrderBook::cancel(unsigned long)::{lambda()#1}&&, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::IntrusiveStore&)#1}&&, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::ContiguousStore&)#1}&&) [clone .isra.0] (3065 cpu-clock samples, 15.33%)decltype(auto) qsl::en..cfree@GLIBC_2.17 (36 cpu-clock samples, 0.18%)qsl::engine::OrderBook::erase_resting_order(qsl::engine::OrderBook::Locator const&) (730 cpu-clock samples, 3.65%)qsl.._int_free_chunk (9 cpu-clock samples, 0.05%)_int_free_merge_chunk (5 cpu-clock samples, 0.03%)_int_free_create_chunk (4 cpu-clock samples, 0.02%)cfree@GLIBC_2.17 (59 cpu-clock samples, 0.30%)free@plt (15 cpu-clock samples, 0.08%)operator delete(void*, std::align_val_t)@plt (24 cpu-clock samples, 0.12%)operator delete(void*, unsigned long, std::align_val_t)@plt (14 cpu-clock samples, 0.07%)std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) (12 cpu-clock samples, 0.06%)std::__detail::_List_node_base::_M_unhook() (15 cpu-clock samples, 0.08%)std::__detail::_List_node_base::_M_unhook()@plt (26 cpu-clock samples, 0.13%)std::_Hashtable<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_erase(unsigned long, std::__detail::_Hash_node_base*, std::__detail::_Hash_node<std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, false>*) (205 cpu-clock samples, 1.03%)_int_free_chunk (15 cpu-clock samples, 0.08%)_int_free_merge_chunk (14 cpu-clock samples, 0.07%)_int_free_create_chunk (4 cpu-clock samples, 0.02%)cfree@GLIBC_2.17 (77 cpu-clock samples, 0.39%)free@plt (13 cpu-clock samples, 0.07%)operator delete(void*, std::align_val_t)@plt (16 cpu-clock samples, 0.08%)operator delete(void*, unsigned long, std::align_val_t)@plt (24 cpu-clock samples, 0.12%)std::pmr::(anonymous namespace)::newdel_res_t::do_deallocate(void*, unsigned long, unsigned long) (2 cpu-clock samples, 0.01%)qsl::engine::MatchingEngine::modify(unsigned int, unsigned long, long, unsigned int) (805 cpu-clock samples, 4.03%)qsl..cfree@GLIBC_2.17 (3 cpu-clock samples, 0.02%)qsl::engine::OrderBook::can_apply_modify(unsigned long, long, unsigned int) const (5 cpu-clock samples, 0.03%)qsl::engine::OrderBook::contains(unsigned long) const (249 cpu-clock samples, 1.25%)qsl::engine::OrderBook::modify(unsigned long, long, unsigned int) (486 cpu-clock samples, 2.43%)q..decltype(auto) qsl::engine::OrderBook::dispatch_storage<qsl::engine::OrderBook::cancel(unsigned long)::{lambda()#1}, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::IntrusiveStore&)#1}, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::ContiguousStore&)#1}>(qsl::engine::OrderBook::cancel(unsigned long)::{lambda()#1}&&, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::IntrusiveStore&)#1}&&, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::ContiguousStore&)#1}&&) [clone .isra.0] (167 cpu-clock samples, 0.84%)cfree@GLIBC_2.17 (10 cpu-clock samples, 0.05%)qsl::engine::OrderBook::erase_resting_order(qsl::engine::OrderBook::Locator const&) (104 cpu-clock samples, 0.52%)_int_free_chunk (2 cpu-clock samples, 0.01%)_int_free_merge_chunk (2 cpu-clock samples, 0.01%)cfree@GLIBC_2.17 (8 cpu-clock samples, 0.04%)free@plt (2 cpu-clock samples, 0.01%)operator delete(void*, std::align_val_t)@plt (7 cpu-clock samples, 0.04%)std::_Hashtable<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_erase(unsigned long, std::__detail::_Hash_node_base*, std::__detail::_Hash_node<std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, false>*) (43 cpu-clock samples, 0.22%)cfree@GLIBC_2.17 (9 cpu-clock samples, 0.05%)free@plt (3 cpu-clock samples, 0.02%)operator delete(void*, unsigned long, std::align_val_t)@plt (2 cpu-clock samples, 0.01%)operator new(unsigned long) (3 cpu-clock samples, 0.02%)qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce) (305 cpu-clock samples, 1.53%)cfree@GLIBC_2.17 (4 cpu-clock samples, 0.02%)decltype(auto) qsl::engine::OrderBook::dispatch_storage<qsl::engine::OrderBook::contains(unsigned long) const::{lambda()#1}, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::IntrusiveStore const&)#1}, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::ContiguousStore const&)#1}>(qsl::engine::OrderBook::contains(unsigned long) const::{lambda()#1}&&, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::IntrusiveStore const&)#1}&&, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::ContiguousStore const&)#1}&&) const [clone .isra.0] (21 cpu-clock samples, 0.11%)free@plt (2 cpu-clock samples, 0.01%)operator delete(void*, unsigned long) (4 cpu-clock samples, 0.02%)operator new(unsigned long) (10 cpu-clock samples, 0.05%)malloc (5 cpu-clock samples, 0.03%)malloc@plt (4 cpu-clock samples, 0.02%)qsl::engine::OrderBook::match_baseline(qsl::core::Side, qsl::engine::OrderBook::MatchContext&) (142 cpu-clock samples, 0.71%)_int_free_chunk (3 cpu-clock samples, 0.02%)_int_free_merge_chunk (3 cpu-clock samples, 0.02%)_int_free_create_chunk (2 cpu-clock samples, 0.01%)cfree@GLIBC_2.17 (9 cpu-clock samples, 0.05%)free@plt (3 cpu-clock samples, 0.02%)operator delete(void*, std::align_val_t)@plt (2 cpu-clock samples, 0.01%)qsl::engine::OrderBook::fill_front_order(std::__cxx11::list<qsl::engine::Order, std::pmr::polymorphic_allocator<qsl::engine::Order> >&, long, qsl::engine::OrderBook::MatchContext&) (39 cpu-clock samples, 0.20%)cfree@GLIBC_2.17 (5 cpu-clock samples, 0.03%)operator new(unsigned long) (5 cpu-clock samples, 0.03%)malloc@plt (3 cpu-clock samples, 0.02%)std::_Hashtable<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_erase(unsigned long, std::__detail::_Hash_node_base*, std::__detail::_Hash_node<std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, false>*) (12 cpu-clock samples, 0.06%)cfree@GLIBC_2.17 (2 cpu-clock samples, 0.01%)std::_Hashtable<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_erase(unsigned long, std::__detail::_Hash_node_base*, std::__detail::_Hash_node<std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, false>*) (6 cpu-clock samples, 0.03%)cfree@GLIBC_2.17 (2 cpu-clock samples, 0.01%)std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) (21 cpu-clock samples, 0.11%)std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)@plt (2 cpu-clock samples, 0.01%)qsl::engine::OrderBook::rest(unsigned long, qsl::core::Side, long, unsigned int) (107 cpu-clock samples, 0.54%)operator new(unsigned long, std::align_val_t) (13 cpu-clock samples, 0.07%)__posix_memalign (6 cpu-clock samples, 0.03%)_mid_memalign (2 cpu-clock samples, 0.01%)qsl::engine::OrderBook::level_for[abi:cxx11](qsl::core::Side, long) (53 cpu-clock samples, 0.27%)operator new(unsigned long, std::align_val_t) (4 cpu-clock samples, 0.02%)__posix_memalign (3 cpu-clock samples, 0.02%)malloc (2 cpu-clock samples, 0.01%)std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) (3 cpu-clock samples, 0.02%)std::__detail::_Map_base<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true>, true>::operator[](unsigned long const&) (37 cpu-clock samples, 0.19%)operator new(unsigned long, std::align_val_t) (10 cpu-clock samples, 0.05%)__posix_memalign (6 cpu-clock samples, 0.03%)malloc (3 cpu-clock samples, 0.02%)operator new(unsigned long, std::align_val_t)@plt (4 cpu-clock samples, 0.02%)std::_Hashtable<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, false>*, unsigned long) (4 cpu-clock samples, 0.02%)qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce) (14435 cpu-clock samples, 72.19%)qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::Ti.._int_free_chunk (6 cpu-clock samples, 0.03%)_int_free_maybe_trim (2 cpu-clock samples, 0.01%)_int_free_merge_chunk (4 cpu-clock samples, 0.02%)_int_free_create_chunk (2 cpu-clock samples, 0.01%)cfree@GLIBC_2.17 (196 cpu-clock samples, 0.98%)free@plt (31 cpu-clock samples, 0.16%)operator delete(void*)@plt (39 cpu-clock samples, 0.20%)operator delete(void*, unsigned long)@plt (30 cpu-clock samples, 0.15%)operator new(unsigned long) (24 cpu-clock samples, 0.12%)qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce) (12295 cpu-clock samples, 61.48%)qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::Tim..__memcpy_generic (96 cpu-clock samples, 0.48%)cfree@GLIBC_2.17 (202 cpu-clock samples, 1.01%)decltype(auto) qsl::engine::OrderBook::dispatch_storage<qsl::engine::OrderBook::contains(unsigned long) const::{lambda()#1}, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::IntrusiveStore const&)#1}, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::ContiguousStore const&)#1}>(qsl::engine::OrderBook::contains(unsigned long) const::{lambda()#1}&&, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::IntrusiveStore const&)#1}&&, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::ContiguousStore const&)#1}&&) const [clone .isra.0] (230 cpu-clock samples, 1.15%)free@plt (41 cpu-clock samples, 0.21%)memcpy@plt (27 cpu-clock samples, 0.14%)operator delete(void*)@plt (65 cpu-clock samples, 0.33%)operator delete(void*, unsigned long) (76 cpu-clock samples, 0.38%)operator delete(void*, unsigned long)@plt (57 cpu-clock samples, 0.29%)operator new(unsigned long) (274 cpu-clock samples, 1.37%)__libc_malloc2 (23 cpu-clock samples, 0.12%)_int_malloc (20 cpu-clock samples, 0.10%)malloc (125 cpu-clock samples, 0.63%)malloc@plt (59 cpu-clock samples, 0.30%)operator new(unsigned long)@plt (44 cpu-clock samples, 0.22%)qsl::engine::OrderBook::match_baseline(qsl::core::Side, qsl::engine::OrderBook::MatchContext&) (5225 cpu-clock samples, 26.13%)qsl::engine::OrderBook::match_baseline(qs..__memcpy_generic (42 cpu-clock samples, 0.21%)_int_free_chunk (31 cpu-clock samples, 0.16%)_int_free_create_chunk (2 cpu-clock samples, 0.01%)_int_free_maybe_trim (3 cpu-clock samples, 0.02%)_int_free_merge_chunk (23 cpu-clock samples, 0.12%)_int_free_create_chunk (15 cpu-clock samples, 0.08%)unlink_chunk.isra.0 (2 cpu-clock samples, 0.01%)unlink_chunk.isra.0 (2 cpu-clock samples, 0.01%)cfree@GLIBC_2.17 (314 cpu-clock samples, 1.57%)free@plt (74 cpu-clock samples, 0.37%)operator delete(void*)@plt (25 cpu-clock samples, 0.13%)operator delete(void*, std::align_val_t)@plt (54 cpu-clock samples, 0.27%)operator delete(void*, unsigned long) (29 cpu-clock samples, 0.15%)operator delete(void*, unsigned long)@plt (9 cpu-clock samples, 0.05%)operator delete(void*, unsigned long, std::align_val_t)@plt (97 cpu-clock samples, 0.49%)operator new(unsigned long) (229 cpu-clock samples, 1.15%)__libc_malloc2 (11 cpu-clock samples, 0.06%)_int_malloc (9 cpu-clock samples, 0.05%)malloc (117 cpu-clock samples, 0.59%)malloc@plt (44 cpu-clock samples, 0.22%)operator new(unsigned long)@plt (45 cpu-clock samples, 0.23%)qsl::engine::OrderBook::fill_front_order(std::__cxx11::list<qsl::engine::Order, std::pmr::polymorphic_allocator<qsl::engine::Order> >&, long, qsl::engine::OrderBook::MatchContext&) (1215 cpu-clock samples, 6.08%)qsl::en..__memcpy_generic (33 cpu-clock samples, 0.17%)_int_free_chunk (17 cpu-clock samples, 0.09%)_int_free_maybe_trim (4 cpu-clock samples, 0.02%)_int_free_merge_chunk (9 cpu-clock samples, 0.05%)_int_free_create_chunk (6 cpu-clock samples, 0.03%)unlink_chunk.isra.0 (2 cpu-clock samples, 0.01%)cfree@GLIBC_2.17 (140 cpu-clock samples, 0.70%)free@plt (31 cpu-clock samples, 0.16%)memcpy@plt (2 cpu-clock samples, 0.01%)operator delete(void*)@plt (17 cpu-clock samples, 0.09%)operator delete(void*, std::align_val_t)@plt (18 cpu-clock samples, 0.09%)operator delete(void*, unsigned long) (34 cpu-clock samples, 0.17%)operator delete(void*, unsigned long)@plt (9 cpu-clock samples, 0.05%)operator delete(void*, unsigned long, std::align_val_t)@plt (21 cpu-clock samples, 0.11%)operator new(unsigned long) (148 cpu-clock samples, 0.74%)__libc_malloc2 (9 cpu-clock samples, 0.05%)_int_malloc (9 cpu-clock samples, 0.05%)malloc (85 cpu-clock samples, 0.43%)malloc@plt (26 cpu-clock samples, 0.13%)operator new(unsigned long)@plt (23 cpu-clock samples, 0.12%)std::_Hashtable<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_erase(unsigned long, std::__detail::_Hash_node_base*, std::__detail::_Hash_node<std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, false>*) (343 cpu-clock samples, 1.72%)_int_free_chunk (8 cpu-clock samples, 0.04%)_int_free_merge_chunk (7 cpu-clock samples, 0.04%)_int_free_create_chunk (2 cpu-clock samples, 0.01%)cfree@GLIBC_2.17 (69 cpu-clock samples, 0.35%)free@plt (17 cpu-clock samples, 0.09%)operator delete(void*, std::align_val_t)@plt (19 cpu-clock samples, 0.10%)operator delete(void*, unsigned long, std::align_val_t)@plt (19 cpu-clock samples, 0.10%)std::pmr::(anonymous namespace)::newdel_res_t::do_deallocate(void*, unsigned long, unsigned long) (4 cpu-clock samples, 0.02%)std::__detail::_List_node_base::_M_unhook() (20 cpu-clock samples, 0.10%)std::__detail::_List_node_base::_M_unhook()@plt (6 cpu-clock samples, 0.03%)std::pmr::(anonymous namespace)::newdel_res_t::do_deallocate(void*, unsigned long, unsigned long) (3 cpu-clock samples, 0.02%)std::_Hashtable<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_erase(unsigned long, std::__detail::_Hash_node_base*, std::__detail::_Hash_node<std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, false>*) (434 cpu-clock samples, 2.17%)_int_free_chunk (8 cpu-clock samples, 0.04%)_int_free_merge_chunk (5 cpu-clock samples, 0.03%)_int_free_create_chunk (4 cpu-clock samples, 0.02%)_int_free_merge_chunk (2 cpu-clock samples, 0.01%)cfree@GLIBC_2.17 (90 cpu-clock samples, 0.45%)free@plt (21 cpu-clock samples, 0.11%)operator delete(void*, std::align_val_t)@plt (25 cpu-clock samples, 0.13%)operator delete(void*, unsigned long, std::align_val_t)@plt (30 cpu-clock samples, 0.15%)std::pmr::(anonymous namespace)::newdel_res_t::do_deallocate(void*, unsigned long, unsigned long) (5 cpu-clock samples, 0.03%)std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) (544 cpu-clock samples, 2.72%)s..std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)@plt (13 cpu-clock samples, 0.07%)std::__detail::_List_node_base::_M_unhook() (22 cpu-clock samples, 0.11%)std::__detail::_List_node_base::_M_unhook()@plt (19 cpu-clock samples, 0.10%)std::pmr::(anonymous namespace)::newdel_res_t::do_deallocate(void*, unsigned long, unsigned long) (27 cpu-clock samples, 0.14%)qsl::engine::OrderBook::rest(unsigned long, qsl::core::Side, long, unsigned int) (5362 cpu-clock samples, 26.81%)qsl::engine::OrderBook::rest(unsigned long..__posix_memalign (4 cpu-clock samples, 0.02%)operator new(unsigned long, std::align_val_t) (707 cpu-clock samples, 3.54%)ope..__posix_memalign (470 cpu-clock samples, 2.35%)_..__libc_malloc2 (80 cpu-clock samples, 0.40%)_int_malloc (73 cpu-clock samples, 0.37%)unlink_chunk.isra.0 (3 cpu-clock samples, 0.02%)_mid_memalign (67 cpu-clock samples, 0.34%)malloc (190 cpu-clock samples, 0.95%)_mid_memalign (33 cpu-clock samples, 0.17%)posix_memalign@plt (54 cpu-clock samples, 0.27%)operator new(unsigned long, std::align_val_t)@plt (83 cpu-clock samples, 0.42%)qsl::engine::OrderBook::level_for[abi:cxx11](qsl::core::Side, long) (2893 cpu-clock samples, 14.47%)qsl::engine::OrderBoo..operator new(unsigned long, std::align_val_t) (336 cpu-clock samples, 1.68%)__posix_memalign (227 cpu-clock samples, 1.14%)_mid_memalign (42 cpu-clock samples, 0.21%)malloc (113 cpu-clock samples, 0.57%)_mid_memalign (13 cpu-clock samples, 0.07%)posix_memalign@plt (19 cpu-clock samples, 0.10%)operator new(unsigned long, std::align_val_t)@plt (61 cpu-clock samples, 0.31%)std::_Rb_tree_decrement(std::_Rb_tree_node_base*) (90 cpu-clock samples, 0.45%)std::_Rb_tree_decrement(std::_Rb_tree_node_base*)@plt (9 cpu-clock samples, 0.05%)std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) (472 cpu-clock samples, 2.36%)s..std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)@plt (43 cpu-clock samples, 0.22%)std::pmr::(anonymous namespace)::newdel_res_t::do_allocate(unsigned long, unsigned long) (12 cpu-clock samples, 0.06%)std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*) (28 cpu-clock samples, 0.14%)std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@plt (45 cpu-clock samples, 0.23%)std::__detail::_Map_base<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true>, true>::operator[](unsigned long const&) (1452 cpu-clock samples, 7.26%)std::__de..__posix_memalign (24 cpu-clock samples, 0.12%)operator new(unsigned long, std::align_val_t) (565 cpu-clock samples, 2.83%)o..__posix_memalign (389 cpu-clock samples, 1.95%)__libc_malloc2 (30 cpu-clock samples, 0.15%)_int_malloc (28 cpu-clock samples, 0.14%)_mid_memalign (63 cpu-clock samples, 0.32%)malloc (203 cpu-clock samples, 1.02%)_mid_memalign (28 cpu-clock samples, 0.14%)posix_memalign@plt (33 cpu-clock samples, 0.17%)operator new(unsigned long, std::align_val_t)@plt (103 cpu-clock samples, 0.52%)std::_Hashtable<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, false>*, unsigned long) (219 cpu-clock samples, 1.10%)std::__detail::_Prime_rehash_policy::_M_need_rehash(unsigned long, unsigned long, unsigned long) const (34 cpu-clock samples, 0.17%)std::__detail::_Prime_rehash_policy::_M_need_rehash(unsigned long, unsigned long, unsigned long) const@plt (35 cpu-clock samples, 0.18%)std::pmr::(anonymous namespace)::newdel_res_t::do_allocate(unsigned long, unsigned long) (21 cpu-clock samples, 0.11%)std::pmr::(anonymous namespace)::newdel_res_t::do_allocate(unsigned long, unsigned long) (2 cpu-clock samples, 0.01%)qsl::engine::OrderBook::can_store_limit(qsl::core::Side, long, unsigned int, qsl::core::TimeInForce) const (167 cpu-clock samples, 0.84%)qsl::engine::OrderBook::contains(unsigned long) const (961 cpu-clock samples, 4.81%)qsl::..qsl::engine::MatchingEngine::new_market(unsigned int, unsigned long, qsl::core::Side, unsigned int) (688 cpu-clock samples, 3.44%)qs..cfree@GLIBC_2.17 (27 cpu-clock samples, 0.14%)free@plt (8 cpu-clock samples, 0.04%)operator delete(void*)@plt (12 cpu-clock samples, 0.06%)operator delete(void*, unsigned long) (2 cpu-clock samples, 0.01%)qsl::engine::OrderBook::add_market(unsigned long, qsl::core::Side, unsigned int) (522 cpu-clock samples, 2.61%)q..decltype(auto) qsl::engine::OrderBook::dispatch_storage<qsl::engine::OrderBook::contains(unsigned long) const::{lambda()#1}, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::IntrusiveStore const&)#1}, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::ContiguousStore const&)#1}>(qsl::engine::OrderBook::contains(unsigned long) const::{lambda()#1}&&, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::IntrusiveStore const&)#1}&&, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::ContiguousStore const&)#1}&&) const [clone .isra.0] (19 cpu-clock samples, 0.10%)qsl::engine::OrderBook::match_baseline(qsl::core::Side, qsl::engine::OrderBook::MatchContext&) (476 cpu-clock samples, 2.38%)q..cfree@GLIBC_2.17 (19 cpu-clock samples, 0.10%)free@plt (2 cpu-clock samples, 0.01%)operator delete(void*, std::align_val_t)@plt (6 cpu-clock samples, 0.03%)operator delete(void*, unsigned long, std::align_val_t)@plt (4 cpu-clock samples, 0.02%)qsl::engine::OrderBook::fill_front_order(std::__cxx11::list<qsl::engine::Order, std::pmr::polymorphic_allocator<qsl::engine::Order> >&, long, qsl::engine::OrderBook::MatchContext&) (314 cpu-clock samples, 1.57%)__memcpy_generic (7 cpu-clock samples, 0.04%)_int_free_chunk (8 cpu-clock samples, 0.04%)_int_free_merge_chunk (5 cpu-clock samples, 0.03%)_int_free_create_chunk (2 cpu-clock samples, 0.01%)cfree@GLIBC_2.17 (33 cpu-clock samples, 0.17%)free@plt (3 cpu-clock samples, 0.02%)operator delete(void*)@plt (4 cpu-clock samples, 0.02%)operator delete(void*, unsigned long) (6 cpu-clock samples, 0.03%)operator delete(void*, unsigned long)@plt (2 cpu-clock samples, 0.01%)operator delete(void*, unsigned long, std::align_val_t)@plt (4 cpu-clock samples, 0.02%)operator new(unsigned long) (44 cpu-clock samples, 0.22%)__libc_malloc2 (3 cpu-clock samples, 0.02%)_int_malloc (3 cpu-clock samples, 0.02%)malloc (19 cpu-clock samples, 0.10%)malloc@plt (10 cpu-clock samples, 0.05%)operator new(unsigned long)@plt (8 cpu-clock samples, 0.04%)std::_Hashtable<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_erase(unsigned long, std::__detail::_Hash_node_base*, std::__detail::_Hash_node<std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, false>*) (82 cpu-clock samples, 0.41%)_int_free_chunk (4 cpu-clock samples, 0.02%)_int_free_merge_chunk (4 cpu-clock samples, 0.02%)_int_free_create_chunk (2 cpu-clock samples, 0.01%)cfree@GLIBC_2.17 (12 cpu-clock samples, 0.06%)free@plt (6 cpu-clock samples, 0.03%)operator delete(void*, std::align_val_t)@plt (3 cpu-clock samples, 0.02%)operator delete(void*, unsigned long, std::align_val_t)@plt (6 cpu-clock samples, 0.03%)std::__detail::_List_node_base::_M_unhook() (4 cpu-clock samples, 0.02%)std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) (48 cpu-clock samples, 0.24%)qsl::engine::OrderBook::contains(unsigned long) const (54 cpu-clock samples, 0.27%)qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce) (16 cpu-clock samples, 0.08%) +]]>QSL Matching-Engine Flame Graph (qsl-bench)flamegraph (software cpu-clock sampling hot-symbol profile) | Linux aarch64 | cpu-clock @ 4000Hz | 19991 samples | 338 stacks | 2026-06-25T01:57:35ZSearch all (19991 cpu-clock samples, 100.00%)allqsl-bench (19991 cpu-clock samples, 100.00%)qsl-bench_start (19991 cpu-clock samples, 100.00%)_start__libc_start_main@@GLIBC_2.34 (19989 cpu-clock samples, 99.99%)__libc_start_main@@GLIBC_2.34__libc_start_call_main (19989 cpu-clock samples, 99.99%)__libc_start_call_mainmain (19973 cpu-clock samples, 99.91%)maincfree@GLIBC_2.17 (53 cpu-clock samples, 0.27%)qsl::engine::MatchingEngine::cancel(unsigned int, unsigned long) (2512 cpu-clock samples, 12.57%)qsl::engine::Match..qsl::engine::OrderBook::cancel(unsigned long) (2073 cpu-clock samples, 10.37%)qsl::engine::O..decltype(auto) qsl::engine::OrderBook::dispatch_storage<qsl::engine::OrderBook::cancel(unsigned long)::{lambda()#1}, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::IntrusiveStore&)#1}, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::ContiguousStore&)#1}>(qsl::engine::OrderBook::cancel(unsigned long)::{lambda()#1}&&, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::IntrusiveStore&)#1}&&, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::ContiguousStore&)#1}&&) [clone .isra.0] (2015 cpu-clock samples, 10.08%)decltype(auto)..cfree@GLIBC_2.17 (47 cpu-clock samples, 0.24%)qsl::engine::OrderBook::erase_resting_order(qsl::engine::OrderBook::Locator const&) (867 cpu-clock samples, 4.34%)qsl:.._int_free_chunk (7 cpu-clock samples, 0.04%)_int_free_merge_chunk (6 cpu-clock samples, 0.03%)_int_free_create_chunk (4 cpu-clock samples, 0.02%)unlink_chunk.isra.0 (2 cpu-clock samples, 0.01%)cfree@GLIBC_2.17 (85 cpu-clock samples, 0.43%)free@plt (22 cpu-clock samples, 0.11%)operator delete(void*, std::align_val_t)@plt (16 cpu-clock samples, 0.08%)operator delete(void*, unsigned long, std::align_val_t)@plt (14 cpu-clock samples, 0.07%)std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) (8 cpu-clock samples, 0.04%)std::__detail::_List_node_base::_M_unhook() (9 cpu-clock samples, 0.05%)std::__detail::_List_node_base::_M_unhook()@plt (26 cpu-clock samples, 0.13%)std::pmr::(anonymous namespace)::newdel_res_t::do_deallocate(void*, unsigned long, unsigned long) (2 cpu-clock samples, 0.01%)std::_Hashtable<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_erase(unsigned long, std::__detail::_Hash_node_base*, std::__detail::_Hash_node<std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, false>*) (280 cpu-clock samples, 1.40%)_int_free_chunk (14 cpu-clock samples, 0.07%)_int_free_maybe_trim (3 cpu-clock samples, 0.02%)_int_free_merge_chunk (7 cpu-clock samples, 0.04%)_int_free_create_chunk (6 cpu-clock samples, 0.03%)cfree@GLIBC_2.17 (88 cpu-clock samples, 0.44%)free@plt (19 cpu-clock samples, 0.10%)operator delete(void*, std::align_val_t)@plt (20 cpu-clock samples, 0.10%)operator delete(void*, unsigned long, std::align_val_t)@plt (45 cpu-clock samples, 0.23%)std::pmr::(anonymous namespace)::newdel_res_t::do_deallocate(void*, unsigned long, unsigned long) (17 cpu-clock samples, 0.09%)qsl::engine::MatchingEngine::modify(unsigned int, unsigned long, long, unsigned int) (785 cpu-clock samples, 3.93%)qsl.._int_free_chunk (2 cpu-clock samples, 0.01%)_int_free_merge_chunk (2 cpu-clock samples, 0.01%)cfree@GLIBC_2.17 (11 cpu-clock samples, 0.06%)free@plt (2 cpu-clock samples, 0.01%)qsl::engine::OrderBook::can_apply_modify(unsigned long, long, unsigned int) const (4 cpu-clock samples, 0.02%)qsl::engine::OrderBook::contains(unsigned long) const (101 cpu-clock samples, 0.51%)qsl::engine::OrderBook::modify(unsigned long, long, unsigned int) (573 cpu-clock samples, 2.87%)q..cfree@GLIBC_2.17 (2 cpu-clock samples, 0.01%)decltype(auto) qsl::engine::OrderBook::dispatch_storage<qsl::engine::OrderBook::cancel(unsigned long)::{lambda()#1}, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::IntrusiveStore&)#1}, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::ContiguousStore&)#1}>(qsl::engine::OrderBook::cancel(unsigned long)::{lambda()#1}&&, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::IntrusiveStore&)#1}&&, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::ContiguousStore&)#1}&&) [clone .isra.0] (216 cpu-clock samples, 1.08%)cfree@GLIBC_2.17 (7 cpu-clock samples, 0.04%)qsl::engine::OrderBook::erase_resting_order(qsl::engine::OrderBook::Locator const&) (156 cpu-clock samples, 0.78%)cfree@GLIBC_2.17 (10 cpu-clock samples, 0.05%)free@plt (6 cpu-clock samples, 0.03%)operator delete(void*, std::align_val_t)@plt (3 cpu-clock samples, 0.02%)operator delete(void*, unsigned long, std::align_val_t)@plt (2 cpu-clock samples, 0.01%)std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) (3 cpu-clock samples, 0.02%)std::__detail::_List_node_base::_M_unhook() (2 cpu-clock samples, 0.01%)std::__detail::_List_node_base::_M_unhook()@plt (6 cpu-clock samples, 0.03%)std::_Hashtable<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_erase(unsigned long, std::__detail::_Hash_node_base*, std::__detail::_Hash_node<std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, false>*) (38 cpu-clock samples, 0.19%)cfree@GLIBC_2.17 (15 cpu-clock samples, 0.08%)free@plt (2 cpu-clock samples, 0.01%)operator delete(void*, unsigned long, std::align_val_t)@plt (8 cpu-clock samples, 0.04%)qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce) (341 cpu-clock samples, 1.71%)cfree@GLIBC_2.17 (15 cpu-clock samples, 0.08%)decltype(auto) qsl::engine::OrderBook::dispatch_storage<qsl::engine::OrderBook::contains(unsigned long) const::{lambda()#1}, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::IntrusiveStore const&)#1}, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::ContiguousStore const&)#1}>(qsl::engine::OrderBook::contains(unsigned long) const::{lambda()#1}&&, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::IntrusiveStore const&)#1}&&, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::ContiguousStore const&)#1}&&) const [clone .isra.0] (3 cpu-clock samples, 0.02%)operator delete(void*)@plt (2 cpu-clock samples, 0.01%)operator delete(void*, unsigned long) (2 cpu-clock samples, 0.01%)operator new(unsigned long) (12 cpu-clock samples, 0.06%)malloc (6 cpu-clock samples, 0.03%)malloc@plt (4 cpu-clock samples, 0.02%)operator new(unsigned long)@plt (2 cpu-clock samples, 0.01%)qsl::engine::OrderBook::match_baseline(qsl::core::Side, qsl::engine::OrderBook::MatchContext&) (165 cpu-clock samples, 0.83%)__memcpy_generic (3 cpu-clock samples, 0.02%)_int_free_chunk (5 cpu-clock samples, 0.03%)_int_free_merge_chunk (4 cpu-clock samples, 0.02%)_int_free_create_chunk (2 cpu-clock samples, 0.01%)cfree@GLIBC_2.17 (13 cpu-clock samples, 0.07%)operator delete(void*, std::align_val_t)@plt (2 cpu-clock samples, 0.01%)operator delete(void*, unsigned long, std::align_val_t)@plt (5 cpu-clock samples, 0.03%)operator new(unsigned long) (5 cpu-clock samples, 0.03%)malloc (2 cpu-clock samples, 0.01%)operator new(unsigned long)@plt (2 cpu-clock samples, 0.01%)qsl::engine::OrderBook::fill_front_order(std::__cxx11::list<qsl::engine::Order, std::pmr::polymorphic_allocator<qsl::engine::Order> >&, long, qsl::engine::OrderBook::MatchContext&) (49 cpu-clock samples, 0.25%)__memcpy_generic (2 cpu-clock samples, 0.01%)cfree@GLIBC_2.17 (6 cpu-clock samples, 0.03%)operator delete(void*)@plt (2 cpu-clock samples, 0.01%)operator delete(void*, unsigned long, std::align_val_t)@plt (2 cpu-clock samples, 0.01%)operator new(unsigned long) (5 cpu-clock samples, 0.03%)malloc (2 cpu-clock samples, 0.01%)malloc@plt (2 cpu-clock samples, 0.01%)operator new(unsigned long)@plt (2 cpu-clock samples, 0.01%)std::_Hashtable<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_erase(unsigned long, std::__detail::_Hash_node_base*, std::__detail::_Hash_node<std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, false>*) (14 cpu-clock samples, 0.07%)cfree@GLIBC_2.17 (2 cpu-clock samples, 0.01%)free@plt (2 cpu-clock samples, 0.01%)operator delete(void*, std::align_val_t)@plt (2 cpu-clock samples, 0.01%)operator delete(void*, unsigned long, std::align_val_t)@plt (3 cpu-clock samples, 0.02%)std::__detail::_List_node_base::_M_unhook() (2 cpu-clock samples, 0.01%)std::_Hashtable<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_erase(unsigned long, std::__detail::_Hash_node_base*, std::__detail::_Hash_node<std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, false>*) (11 cpu-clock samples, 0.06%)_int_free_chunk (2 cpu-clock samples, 0.01%)_int_free_merge_chunk (2 cpu-clock samples, 0.01%)_int_free_create_chunk (2 cpu-clock samples, 0.01%)cfree@GLIBC_2.17 (2 cpu-clock samples, 0.01%)operator delete(void*, std::align_val_t)@plt (2 cpu-clock samples, 0.01%)std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) (17 cpu-clock samples, 0.09%)qsl::engine::OrderBook::rest(unsigned long, qsl::core::Side, long, unsigned int) (125 cpu-clock samples, 0.63%)operator new(unsigned long, std::align_val_t) (20 cpu-clock samples, 0.10%)__posix_memalign (14 cpu-clock samples, 0.07%)malloc (9 cpu-clock samples, 0.05%)_mid_memalign (3 cpu-clock samples, 0.02%)qsl::engine::OrderBook::level_for[abi:cxx11](qsl::core::Side, long) (58 cpu-clock samples, 0.29%)operator new(unsigned long, std::align_val_t) (5 cpu-clock samples, 0.03%)__posix_memalign (4 cpu-clock samples, 0.02%)malloc (2 cpu-clock samples, 0.01%)std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) (5 cpu-clock samples, 0.03%)std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*) (2 cpu-clock samples, 0.01%)std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@plt (2 cpu-clock samples, 0.01%)std::__detail::_Map_base<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true>, true>::operator[](unsigned long const&) (37 cpu-clock samples, 0.19%)__posix_memalign (2 cpu-clock samples, 0.01%)operator new(unsigned long, std::align_val_t) (17 cpu-clock samples, 0.09%)__posix_memalign (11 cpu-clock samples, 0.06%)_mid_memalign (3 cpu-clock samples, 0.02%)malloc (3 cpu-clock samples, 0.02%)_mid_memalign (4 cpu-clock samples, 0.02%)operator new(unsigned long, std::align_val_t)@plt (3 cpu-clock samples, 0.02%)std::_Hashtable<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, false>*, unsigned long) (10 cpu-clock samples, 0.05%)std::__detail::_Prime_rehash_policy::_M_need_rehash(unsigned long, unsigned long, unsigned long) const@plt (2 cpu-clock samples, 0.01%)std::pmr::(anonymous namespace)::newdel_res_t::do_allocate(unsigned long, unsigned long) (2 cpu-clock samples, 0.01%)qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce) (15347 cpu-clock samples, 76.77%)qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce)_int_free_chunk (3 cpu-clock samples, 0.02%)_int_free_merge_chunk (2 cpu-clock samples, 0.01%)cfree@GLIBC_2.17 (206 cpu-clock samples, 1.03%)free@plt (32 cpu-clock samples, 0.16%)operator delete(void*)@plt (34 cpu-clock samples, 0.17%)operator delete(void*, unsigned long)@plt (28 cpu-clock samples, 0.14%)operator new(unsigned long) (20 cpu-clock samples, 0.10%)qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce) (13764 cpu-clock samples, 68.85%)qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce)__memcpy_generic (115 cpu-clock samples, 0.58%)cfree@GLIBC_2.17 (278 cpu-clock samples, 1.39%)decltype(auto) qsl::engine::OrderBook::dispatch_storage<qsl::engine::OrderBook::contains(unsigned long) const::{lambda()#1}, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::IntrusiveStore const&)#1}, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::ContiguousStore const&)#1}>(qsl::engine::OrderBook::contains(unsigned long) const::{lambda()#1}&&, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::IntrusiveStore const&)#1}&&, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::ContiguousStore const&)#1}&&) const [clone .isra.0] (227 cpu-clock samples, 1.14%)free@plt (47 cpu-clock samples, 0.24%)memcpy@plt (30 cpu-clock samples, 0.15%)operator delete(void*)@plt (60 cpu-clock samples, 0.30%)operator delete(void*, unsigned long) (79 cpu-clock samples, 0.40%)operator delete(void*, unsigned long)@plt (70 cpu-clock samples, 0.35%)operator new(unsigned long) (351 cpu-clock samples, 1.76%)__libc_malloc2 (31 cpu-clock samples, 0.16%)_int_malloc (29 cpu-clock samples, 0.15%)malloc (171 cpu-clock samples, 0.86%)malloc@plt (70 cpu-clock samples, 0.35%)operator new(unsigned long)@plt (64 cpu-clock samples, 0.32%)operator new(unsigned long, std::align_val_t) (6 cpu-clock samples, 0.03%)qsl::engine::OrderBook::match_baseline(qsl::core::Side, qsl::engine::OrderBook::MatchContext&) (5800 cpu-clock samples, 29.01%)qsl::engine::OrderBook::match_baseline(qsl::co..__memcpy_generic (81 cpu-clock samples, 0.41%)_int_free_chunk (25 cpu-clock samples, 0.13%)_int_free_create_chunk (2 cpu-clock samples, 0.01%)_int_free_merge_chunk (14 cpu-clock samples, 0.07%)_int_free_create_chunk (7 cpu-clock samples, 0.04%)_int_free_merge_chunk (2 cpu-clock samples, 0.01%)cfree@GLIBC_2.17 (382 cpu-clock samples, 1.91%)free@plt (76 cpu-clock samples, 0.38%)operator delete(void*)@plt (32 cpu-clock samples, 0.16%)operator delete(void*, std::align_val_t)@plt (65 cpu-clock samples, 0.33%)operator delete(void*, unsigned long) (43 cpu-clock samples, 0.22%)operator delete(void*, unsigned long)@plt (9 cpu-clock samples, 0.05%)operator delete(void*, unsigned long, std::align_val_t)@plt (97 cpu-clock samples, 0.49%)operator new(unsigned long) (289 cpu-clock samples, 1.45%)__libc_malloc2 (11 cpu-clock samples, 0.06%)_int_malloc (9 cpu-clock samples, 0.05%)malloc (140 cpu-clock samples, 0.70%)malloc@plt (66 cpu-clock samples, 0.33%)operator new(unsigned long)@plt (74 cpu-clock samples, 0.37%)qsl::engine::OrderBook::fill_front_order(std::__cxx11::list<qsl::engine::Order, std::pmr::polymorphic_allocator<qsl::engine::Order> >&, long, qsl::engine::OrderBook::MatchContext&) (1237 cpu-clock samples, 6.19%)qsl::en..__memcpy_generic (46 cpu-clock samples, 0.23%)_int_free_chunk (25 cpu-clock samples, 0.13%)_int_free_create_chunk (2 cpu-clock samples, 0.01%)_int_free_maybe_trim (4 cpu-clock samples, 0.02%)_int_free_merge_chunk (14 cpu-clock samples, 0.07%)_int_free_create_chunk (5 cpu-clock samples, 0.03%)_int_free_merge_chunk (2 cpu-clock samples, 0.01%)cfree@GLIBC_2.17 (129 cpu-clock samples, 0.65%)free@plt (40 cpu-clock samples, 0.20%)operator delete(void*)@plt (23 cpu-clock samples, 0.12%)operator delete(void*, std::align_val_t)@plt (14 cpu-clock samples, 0.07%)operator delete(void*, unsigned long) (48 cpu-clock samples, 0.24%)operator delete(void*, unsigned long)@plt (4 cpu-clock samples, 0.02%)operator delete(void*, unsigned long, std::align_val_t)@plt (36 cpu-clock samples, 0.18%)operator new(unsigned long) (204 cpu-clock samples, 1.02%)__libc_malloc2 (15 cpu-clock samples, 0.08%)_int_malloc (13 cpu-clock samples, 0.07%)malloc (103 cpu-clock samples, 0.52%)malloc@plt (41 cpu-clock samples, 0.21%)operator new(unsigned long)@plt (28 cpu-clock samples, 0.14%)std::_Hashtable<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_erase(unsigned long, std::__detail::_Hash_node_base*, std::__detail::_Hash_node<std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, false>*) (234 cpu-clock samples, 1.17%)_int_free_chunk (10 cpu-clock samples, 0.05%)_int_free_maybe_trim (2 cpu-clock samples, 0.01%)_int_free_merge_chunk (6 cpu-clock samples, 0.03%)_int_free_create_chunk (3 cpu-clock samples, 0.02%)cfree@GLIBC_2.17 (71 cpu-clock samples, 0.36%)free@plt (28 cpu-clock samples, 0.14%)operator delete(void*, std::align_val_t)@plt (20 cpu-clock samples, 0.10%)operator delete(void*, unsigned long, std::align_val_t)@plt (36 cpu-clock samples, 0.18%)std::pmr::(anonymous namespace)::newdel_res_t::do_deallocate(void*, unsigned long, unsigned long) (3 cpu-clock samples, 0.02%)std::__detail::_List_node_base::_M_unhook() (20 cpu-clock samples, 0.10%)std::__detail::_List_node_base::_M_unhook()@plt (11 cpu-clock samples, 0.06%)std::pmr::(anonymous namespace)::newdel_res_t::do_deallocate(void*, unsigned long, unsigned long) (8 cpu-clock samples, 0.04%)std::_Hashtable<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_erase(unsigned long, std::__detail::_Hash_node_base*, std::__detail::_Hash_node<std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, false>*) (308 cpu-clock samples, 1.54%)_int_free_chunk (25 cpu-clock samples, 0.13%)_int_free_maybe_trim (3 cpu-clock samples, 0.02%)_int_free_merge_chunk (19 cpu-clock samples, 0.10%)_int_free_create_chunk (12 cpu-clock samples, 0.06%)cfree@GLIBC_2.17 (87 cpu-clock samples, 0.44%)free@plt (31 cpu-clock samples, 0.16%)operator delete(void*, std::align_val_t)@plt (23 cpu-clock samples, 0.12%)operator delete(void*, unsigned long, std::align_val_t)@plt (40 cpu-clock samples, 0.20%)std::pmr::(anonymous namespace)::newdel_res_t::do_deallocate(void*, unsigned long, unsigned long) (12 cpu-clock samples, 0.06%)std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) (630 cpu-clock samples, 3.15%)st..std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)@plt (10 cpu-clock samples, 0.05%)std::__detail::_List_node_base::_M_unhook() (21 cpu-clock samples, 0.11%)std::__detail::_List_node_base::_M_unhook()@plt (12 cpu-clock samples, 0.06%)std::pmr::(anonymous namespace)::newdel_res_t::do_deallocate(void*, unsigned long, unsigned long) (21 cpu-clock samples, 0.11%)qsl::engine::OrderBook::rest(unsigned long, qsl::core::Side, long, unsigned int) (5960 cpu-clock samples, 29.81%)qsl::engine::OrderBook::rest(unsigned long, qsl..__posix_memalign (3 cpu-clock samples, 0.02%)operator new(unsigned long, std::align_val_t) (774 cpu-clock samples, 3.87%)ope..__libc_malloc2 (2 cpu-clock samples, 0.01%)__posix_memalign (523 cpu-clock samples, 2.62%)_..__libc_malloc2 (84 cpu-clock samples, 0.42%)_int_malloc (78 cpu-clock samples, 0.39%)unlink_chunk.isra.0 (2 cpu-clock samples, 0.01%)_mid_memalign (65 cpu-clock samples, 0.33%)malloc (232 cpu-clock samples, 1.16%)_mid_memalign (40 cpu-clock samples, 0.20%)posix_memalign@plt (43 cpu-clock samples, 0.22%)operator new(unsigned long, std::align_val_t)@plt (97 cpu-clock samples, 0.49%)qsl::engine::OrderBook::level_for[abi:cxx11](qsl::core::Side, long) (3268 cpu-clock samples, 16.35%)qsl::engine::OrderBook::..operator new(unsigned long, std::align_val_t) (411 cpu-clock samples, 2.06%)__posix_memalign (280 cpu-clock samples, 1.40%)__libc_malloc2 (2 cpu-clock samples, 0.01%)_mid_memalign (52 cpu-clock samples, 0.26%)malloc (130 cpu-clock samples, 0.65%)_mid_memalign (23 cpu-clock samples, 0.12%)posix_memalign@plt (20 cpu-clock samples, 0.10%)operator new(unsigned long, std::align_val_t)@plt (62 cpu-clock samples, 0.31%)std::_Rb_tree_decrement(std::_Rb_tree_node_base*) (118 cpu-clock samples, 0.59%)std::_Rb_tree_decrement(std::_Rb_tree_node_base*)@plt (2 cpu-clock samples, 0.01%)std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) (542 cpu-clock samples, 2.71%)s..std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)@plt (41 cpu-clock samples, 0.21%)std::pmr::(anonymous namespace)::newdel_res_t::do_allocate(unsigned long, unsigned long) (15 cpu-clock samples, 0.08%)std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*) (40 cpu-clock samples, 0.20%)std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@plt (54 cpu-clock samples, 0.27%)std::__detail::_Map_base<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true>, true>::operator[](unsigned long const&) (1550 cpu-clock samples, 7.75%)std::__det..__posix_memalign (37 cpu-clock samples, 0.19%)operator new(unsigned long, std::align_val_t) (770 cpu-clock samples, 3.85%)ope..__posix_memalign (511 cpu-clock samples, 2.56%)_..__libc_malloc2 (32 cpu-clock samples, 0.16%)_int_malloc (26 cpu-clock samples, 0.13%)_int_malloc (2 cpu-clock samples, 0.01%)_mid_memalign (84 cpu-clock samples, 0.42%)malloc (257 cpu-clock samples, 1.29%)_mid_memalign (40 cpu-clock samples, 0.20%)posix_memalign@plt (47 cpu-clock samples, 0.24%)operator new(unsigned long, std::align_val_t)@plt (125 cpu-clock samples, 0.63%)std::_Hashtable<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, false>*, unsigned long) (313 cpu-clock samples, 1.57%)std::__detail::_Prime_rehash_policy::_M_need_rehash(unsigned long, unsigned long, unsigned long) const (54 cpu-clock samples, 0.27%)std::__detail::_Prime_rehash_policy::_M_need_rehash(unsigned long, unsigned long, unsigned long) const@plt (36 cpu-clock samples, 0.18%)std::pmr::(anonymous namespace)::newdel_res_t::do_allocate(unsigned long, unsigned long) (27 cpu-clock samples, 0.14%)std::pmr::(anonymous namespace)::newdel_res_t::do_allocate(unsigned long, unsigned long) (2 cpu-clock samples, 0.01%)qsl::engine::OrderBook::can_store_limit(qsl::core::Side, long, unsigned int, qsl::core::TimeInForce) const (183 cpu-clock samples, 0.92%)qsl::engine::OrderBook::contains(unsigned long) const (215 cpu-clock samples, 1.08%)qsl::engine::MatchingEngine::new_market(unsigned int, unsigned long, qsl::core::Side, unsigned int) (662 cpu-clock samples, 3.31%)qs..cfree@GLIBC_2.17 (26 cpu-clock samples, 0.13%)free@plt (6 cpu-clock samples, 0.03%)operator delete(void*)@plt (7 cpu-clock samples, 0.04%)operator delete(void*, unsigned long)@plt (4 cpu-clock samples, 0.02%)qsl::engine::OrderBook::add_market(unsigned long, qsl::core::Side, unsigned int) (533 cpu-clock samples, 2.67%)q..cfree@GLIBC_2.17 (5 cpu-clock samples, 0.03%)decltype(auto) qsl::engine::OrderBook::dispatch_storage<qsl::engine::OrderBook::contains(unsigned long) const::{lambda()#1}, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::IntrusiveStore const&)#1}, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::ContiguousStore const&)#1}>(qsl::engine::OrderBook::contains(unsigned long) const::{lambda()#1}&&, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::IntrusiveStore const&)#1}&&, qsl::engine::OrderBook::contains(unsigned long) const::{lambda(qsl::engine::OrderBook::ContiguousStore const&)#1}&&) const [clone .isra.0] (19 cpu-clock samples, 0.10%)qsl::engine::OrderBook::match_baseline(qsl::core::Side, qsl::engine::OrderBook::MatchContext&) (486 cpu-clock samples, 2.43%)q.._int_free_chunk (2 cpu-clock samples, 0.01%)cfree@GLIBC_2.17 (22 cpu-clock samples, 0.11%)free@plt (4 cpu-clock samples, 0.02%)operator delete(void*, std::align_val_t)@plt (4 cpu-clock samples, 0.02%)operator delete(void*, unsigned long, std::align_val_t)@plt (8 cpu-clock samples, 0.04%)operator new(unsigned long) (6 cpu-clock samples, 0.03%)qsl::engine::OrderBook::fill_front_order(std::__cxx11::list<qsl::engine::Order, std::pmr::polymorphic_allocator<qsl::engine::Order> >&, long, qsl::engine::OrderBook::MatchContext&) (317 cpu-clock samples, 1.59%)__memcpy_generic (3 cpu-clock samples, 0.02%)_int_free_chunk (6 cpu-clock samples, 0.03%)_int_free_merge_chunk (5 cpu-clock samples, 0.03%)_int_free_create_chunk (3 cpu-clock samples, 0.02%)cfree@GLIBC_2.17 (32 cpu-clock samples, 0.16%)free@plt (15 cpu-clock samples, 0.08%)operator delete(void*)@plt (6 cpu-clock samples, 0.03%)operator delete(void*, std::align_val_t)@plt (9 cpu-clock samples, 0.05%)operator delete(void*, unsigned long) (11 cpu-clock samples, 0.06%)operator delete(void*, unsigned long)@plt (5 cpu-clock samples, 0.03%)operator delete(void*, unsigned long, std::align_val_t)@plt (3 cpu-clock samples, 0.02%)operator new(unsigned long) (49 cpu-clock samples, 0.25%)__libc_malloc2 (2 cpu-clock samples, 0.01%)_int_malloc (2 cpu-clock samples, 0.01%)malloc (21 cpu-clock samples, 0.11%)malloc@plt (16 cpu-clock samples, 0.08%)operator new(unsigned long)@plt (7 cpu-clock samples, 0.04%)std::_Hashtable<unsigned long, std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, std::pmr::polymorphic_allocator<std::pair<unsigned long const, qsl::engine::OrderBook::Locator> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_erase(unsigned long, std::__detail::_Hash_node_base*, std::__detail::_Hash_node<std::pair<unsigned long const, qsl::engine::OrderBook::Locator>, false>*) (60 cpu-clock samples, 0.30%)cfree@GLIBC_2.17 (19 cpu-clock samples, 0.10%)free@plt (7 cpu-clock samples, 0.04%)operator delete(void*, std::align_val_t)@plt (7 cpu-clock samples, 0.04%)operator delete(void*, unsigned long, std::align_val_t)@plt (8 cpu-clock samples, 0.04%)std::__detail::_List_node_base::_M_unhook() (4 cpu-clock samples, 0.02%)std::__detail::_List_node_base::_M_unhook()@plt (3 cpu-clock samples, 0.02%)std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) (44 cpu-clock samples, 0.22%)std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)@plt (5 cpu-clock samples, 0.03%)std::pmr::(anonymous namespace)::newdel_res_t::do_deallocate(void*, unsigned long, unsigned long) (2 cpu-clock samples, 0.01%)qsl::engine::OrderBook::contains(unsigned long) const (14 cpu-clock samples, 0.07%)qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce) (16 cpu-clock samples, 0.08%)_dl_start (2 cpu-clock samples, 0.01%)_dl_sysdep_start (2 cpu-clock samples, 0.01%)dl_main (2 cpu-clock samples, 0.01%)_dl_relocate_object (2 cpu-clock samples, 0.01%)_dl_relocate_object_no_relro (2 cpu-clock samples, 0.01%) diff --git a/results/flamegraph.txt b/results/flamegraph.txt index 9be2d17..2a7ae73 100644 --- a/results/flamegraph.txt +++ b/results/flamegraph.txt @@ -8,20 +8,20 @@ Perf: perf version 6.19.14-400.asahi.fc44.aarch64 Perf paranoid: 2 Build type: Release Provenance version: 1 -Git commit (informational): 1094c84 -Source digest: sha256:4ea656895e7d29ccd2130b6f9aff49f7eb9c7c18608ccf543366275873eff711 +Git commit (informational): ebc1c95 +Source digest: sha256:201221d4d6344c0dd55d1f497b67337503e2876208e65dfd5db4f450f568226d Source digest scope: flamegraph-benchmark Dirty inputs: no Generated output: results/flamegraph.svg -Date: 2026-06-24T23:20:24Z +Date: 2026-06-25T01:57:35Z Benchmark binary: build/flamegraph/qsl-bench Dataset: qsl-bench profile workload (warm bounded order flow, 5s) Call graph: fp Record event: cpu-clock Sample freq: 4000 Hz -Sample count (folded total): 19997 -Sample count (perf record est.): 19997 -Folded stacks: 316 +Sample count (folded total): 19991 +Sample count (perf record est.): 19991 +Folded stacks: 338 Minimum samples for hot profile: 200 Insufficient samples: no Record status: 0 @@ -35,21 +35,21 @@ investigation. Frame width is proportional to on-CPU samples, not wall-clock latency or throughput, and is hardware/kernel/compiler/build dependent. Top 15 folded stacks (count stack): - 2093 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::cancel(unsigned int, unsigned long);qsl::engine::OrderBook::cancel(unsigned long);decltype(auto) qsl::engine::OrderBook::dispatch_storage(qsl::engine::OrderBook::cancel(unsigned long)::{lambda()#1}&&, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::IntrusiveStore&)#1}&&, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::ContiguousStore&)#1}&&) [clone .isra.0] - 2001 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::match_baseline(qsl::core::Side, qsl::engine::OrderBook::MatchContext&) - 1869 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::rest(unsigned long, qsl::core::Side, long, unsigned int);qsl::engine::OrderBook::level_for[abi:cxx11](qsl::core::Side, long) - 961 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::contains(unsigned long) const - 686 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce) - 595 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce) - 555 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::cancel(unsigned int, unsigned long);qsl::engine::OrderBook::cancel(unsigned long);decltype(auto) qsl::engine::OrderBook::dispatch_storage(qsl::engine::OrderBook::cancel(unsigned long)::{lambda()#1}&&, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::IntrusiveStore&)#1}&&, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::ContiguousStore&)#1}&&) [clone .isra.0];qsl::engine::OrderBook::erase_resting_order(qsl::engine::OrderBook::Locator const&) - 544 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::match_baseline(qsl::core::Side, qsl::engine::OrderBook::MatchContext&);std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) - 520 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::rest(unsigned long, qsl::core::Side, long, unsigned int);std::__detail::_Map_base, std::pmr::polymorphic_allocator >, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits, true>::operator[](unsigned long const&) - 519 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main - 472 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::rest(unsigned long, qsl::core::Side, long, unsigned int);qsl::engine::OrderBook::level_for[abi:cxx11](qsl::core::Side, long);std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) - 354 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::cancel(unsigned int, unsigned long) - 349 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::match_baseline(qsl::core::Side, qsl::engine::OrderBook::MatchContext&);qsl::engine::OrderBook::fill_front_order(std::__cxx11::list >&, long, qsl::engine::OrderBook::MatchContext&) - 314 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::match_baseline(qsl::core::Side, qsl::engine::OrderBook::MatchContext&);cfree@GLIBC_2.17 - 253 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::match_baseline(qsl::core::Side, qsl::engine::OrderBook::MatchContext&);std::_Hashtable, std::pmr::polymorphic_allocator >, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_erase(unsigned long, std::__detail::_Hash_node_base*, std::__detail::_Hash_node, false>*) + 2385 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::match_baseline(qsl::core::Side, qsl::engine::OrderBook::MatchContext&) + 2076 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::rest(unsigned long, qsl::core::Side, long, unsigned int);qsl::engine::OrderBook::level_for[abi:cxx11](qsl::core::Side, long) + 862 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce) + 820 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::cancel(unsigned int, unsigned long);qsl::engine::OrderBook::cancel(unsigned long);decltype(auto) qsl::engine::OrderBook::dispatch_storage(qsl::engine::OrderBook::cancel(unsigned long)::{lambda()#1}&&, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::IntrusiveStore&)#1}&&, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::ContiguousStore&)#1}&&) [clone .isra.0] + 677 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::cancel(unsigned int, unsigned long);qsl::engine::OrderBook::cancel(unsigned long);decltype(auto) qsl::engine::OrderBook::dispatch_storage(qsl::engine::OrderBook::cancel(unsigned long)::{lambda()#1}&&, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::IntrusiveStore&)#1}&&, qsl::engine::OrderBook::cancel(unsigned long)::{lambda(qsl::engine::OrderBook::ContiguousStore&)#1}&&) [clone .isra.0];qsl::engine::OrderBook::erase_resting_order(qsl::engine::OrderBook::Locator const&) + 676 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce) + 630 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::match_baseline(qsl::core::Side, qsl::engine::OrderBook::MatchContext&);std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) + 614 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main + 542 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::rest(unsigned long, qsl::core::Side, long, unsigned int);qsl::engine::OrderBook::level_for[abi:cxx11](qsl::core::Side, long);std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) + 439 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::cancel(unsigned int, unsigned long) + 382 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::match_baseline(qsl::core::Side, qsl::engine::OrderBook::MatchContext&);cfree@GLIBC_2.17 + 365 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::match_baseline(qsl::core::Side, qsl::engine::OrderBook::MatchContext&);qsl::engine::OrderBook::fill_front_order(std::__cxx11::list >&, long, qsl::engine::OrderBook::MatchContext&) + 278 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);cfree@GLIBC_2.17 + 278 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::rest(unsigned long, qsl::core::Side, long, unsigned int);std::__detail::_Map_base, std::pmr::polymorphic_allocator >, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits, true>::operator[](unsigned long const&) + 257 qsl-bench;_start;__libc_start_main@@GLIBC_2.34;__libc_start_call_main;main;qsl::engine::MatchingEngine::new_limit(unsigned int, unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::add_limit(unsigned long, qsl::core::Side, long, unsigned int, qsl::core::TimeInForce);qsl::engine::OrderBook::rest(unsigned long, qsl::core::Side, long, unsigned int);std::__detail::_Map_base, std::pmr::polymorphic_allocator >, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits, true>::operator[](unsigned long const&);operator new(unsigned long, std::align_val_t);__posix_memalign;malloc Benchmark output: -profile workload: storage=baseline ops=42590208 elapsed=5.000s (8517648 ops/sec) resting~512 +profile workload: storage=baseline ops=50659328 elapsed=5.000s (10131572 ops/sec) resting~512