diff --git a/chain.dat b/chain.dat new file mode 100644 index 0000000..3cb2549 Binary files /dev/null and b/chain.dat differ diff --git a/flamegraph.svg b/flamegraph.svg new file mode 100644 index 0000000..6cab042 --- /dev/null +++ b/flamegraph.svg @@ -0,0 +1,419 @@ +Flame Graph Reset ZoomSearch [[heap]] (1 samples, 0.53%)<alloc::alloc::Global as core::alloc::AllocRef>::dealloc (1 samples, 0.53%)core::sync::atomic::AtomicUsize::compare_exchange (1 samples, 0.53%)[unknown] (5 samples, 2.65%)[u..tokio::runtime::context::enter (5 samples, 2.65%)to..tokio::runtime::Runtime::block_on::{{closure}} (5 samples, 2.65%)to..tokio::runtime::thread_pool::ThreadPool::block_on (5 samples, 2.65%)to..tokio::runtime::enter::Enter::block_on (5 samples, 2.65%)to..<tokio::park::thread::CachedParkThread as tokio::park::Park>::park (5 samples, 2.65%)<t..tokio::park::thread::CachedParkThread::with_current (5 samples, 2.65%)to..std::thread::local::LocalKey<T>::try_with (5 samples, 2.65%)st..tokio::park::thread::CachedParkThread::with_current::{{closure}} (5 samples, 2.65%)to..<tokio::park::thread::CachedParkThread as tokio::park::Park>::park::{{closure}} (5 samples, 2.65%)<t..tokio::park::thread::Inner::park (5 samples, 2.65%)to..std::sync::condvar::Condvar::wait (4 samples, 2.12%)s..std::sys_common::condvar::Condvar::wait (4 samples, 2.12%)s..std::sys::unix::condvar::Condvar::wait (4 samples, 2.12%)s..__pthread_cond_wait (4 samples, 2.12%)_..__GI___clone (36 samples, 19.05%)__GI___clone__do_global_dtors_aux_fini_array_entry (1 samples, 0.53%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::write (1 samples, 0.53%)__libc_start_main (4 samples, 2.12%)_..main (4 samples, 2.12%)m..std::rt::lang_start (4 samples, 2.12%)s..std::rt::lang_start_internal (4 samples, 2.12%)s..std::panic::catch_unwind (4 samples, 2.12%)s..std::panicking::try (4 samples, 2.12%)s..std::panicking::try::do_call (4 samples, 2.12%)s..core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once (4 samples, 2.12%)c..std::rt::lang_start::{{closure}} (4 samples, 2.12%)s..std::sys_common::backtrace::__rust_begin_short_backtrace (4 samples, 2.12%)s..core::ops::function::FnOnce::call_once (4 samples, 2.12%)c..markov::main (4 samples, 2.12%)m..core::ptr::drop_in_place (4 samples, 2.12%)c..core::ptr::drop_in_place (4 samples, 2.12%)c..<tokio::runtime::blocking::pool::BlockingPool as core::ops::drop::Drop>::drop (4 samples, 2.12%)<..tokio::runtime::blocking::pool::BlockingPool::shutdown (4 samples, 2.12%)t..tokio::runtime::blocking::shutdown::Receiver::wait (4 samples, 2.12%)t..tokio::runtime::enter::Enter::block_on (4 samples, 2.12%)t..<tokio::park::thread::CachedParkThread as tokio::park::Park>::park (4 samples, 2.12%)<..tokio::park::thread::CachedParkThread::with_current (4 samples, 2.12%)t..std::thread::local::LocalKey<T>::try_with (4 samples, 2.12%)s..tokio::park::thread::CachedParkThread::with_current::{{closure}} (4 samples, 2.12%)t..<tokio::park::thread::CachedParkThread as tokio::park::Park>::park::{{closure}} (4 samples, 2.12%)<..tokio::park::thread::Inner::park (4 samples, 2.12%)t..std::sync::condvar::Condvar::wait (4 samples, 2.12%)s..std::sys_common::condvar::Condvar::wait (4 samples, 2.12%)s..std::sys::unix::condvar::Condvar::wait (4 samples, 2.12%)s..__pthread_cond_wait (4 samples, 2.12%)_..markov (53 samples, 28.04%)markov_start (10 samples, 5.29%)_start_dl_start (2 samples, 1.06%)_dl_sysdep_start (1 samples, 0.53%)dl_main (1 samples, 0.53%)_dl_relocate_object (1 samples, 0.53%)core::ptr::drop_in_place (1 samples, 0.53%)std::panicking::panicking (1 samples, 0.53%)tokio::runtime::park::Inner::park_condvar (1 samples, 0.53%)[[heap]] (4 samples, 2.12%)[..tokio::runtime::task::harness::Harness<T,S>::from_raw (1 samples, 0.53%)__memmove_avx_unaligned_erms (1 samples, 0.53%)alloc::sync::Arc<T>::inner (1 samples, 0.53%)core::ptr::drop_in_place (1 samples, 0.53%)core::ptr::non_null::NonNull<T>::as_ptr (1 samples, 0.53%)core::ptr::read (1 samples, 0.53%)core::ptr::write (2 samples, 1.06%)core::result::Result<T,E>::unwrap (1 samples, 0.53%)[anon] (9 samples, 4.76%)[anon]env_logger::filter::Filter::matches (1 samples, 0.53%)<hyper::common::drain::Watching<F,FN> as core::future::future::Future>::poll (1 samples, 0.53%)<hyper::server::conn::upgrades::UpgradeableConnection<I,S,E> as core::future::future::Future>::poll (1 samples, 0.53%)<hyper::server::conn::ProtoServer<T,B,S,E> as core::future::future::Future>::poll (1 samples, 0.53%)<hyper::proto::h1::dispatch::Dispatcher<D,Bs,I,T> as core::future::future::Future>::poll (1 samples, 0.53%)hyper::proto::h1::dispatch::Dispatcher<D,Bs,I,T>::poll_catch (1 samples, 0.53%)hyper::proto::h1::dispatch::Dispatcher<D,Bs,I,T>::poll_inner (1 samples, 0.53%)<hyper::proto::h1::role::Server as hyper::proto::h1::Http1Transaction>::update_date (1 samples, 0.53%)hyper::proto::h1::date::update (1 samples, 0.53%)std::thread::local::LocalKey<T>::with (1 samples, 0.53%)std::thread::local::LocalKey<T>::try_with (1 samples, 0.53%)hyper::proto::h1::date::update::{{closure}} (1 samples, 0.53%)hyper::proto::h1::date::CachedDate::check (1 samples, 0.53%)std::time::SystemTime::now (1 samples, 0.53%)std::sys::unix::time::inner::SystemTime::now (1 samples, 0.53%)std::sys::unix::time::inner::now (1 samples, 0.53%)__clock_gettime_2 (1 samples, 0.53%)__vdso_clock_gettime (1 samples, 0.53%)<warp::filter::and_then::AndThenFuture<T,F> as core::future::future::Future>::poll (1 samples, 0.53%)<F as futures_core::future::TryFuture>::try_poll (1 samples, 0.53%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (1 samples, 0.53%)markov::main::{{closure}}::{{closure}}::{{closure}} (1 samples, 0.53%)<core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll (1 samples, 0.53%)markov::feed::full::{{closure}} (1 samples, 0.53%)markov::feed::feed (1 samples, 0.53%)markov::Chain<T>::feed (1 samples, 0.53%)std::collections::hash::map::HashMap<K,V,S>::get_mut (1 samples, 0.53%)hashbrown::map::HashMap<K,V,S>::get_mut (1 samples, 0.53%)hashbrown::map::make_hash (1 samples, 0.53%)<alloc::vec::Vec<T> as core::hash::Hash>::hash (1 samples, 0.53%)core::hash::impls::<impl core::hash::Hash for [T]>::hash (1 samples, 0.53%)core::hash::impls::<impl core::hash::Hash for usize>::hash (1 samples, 0.53%)core::hash::Hasher::write_usize (1 samples, 0.53%)<std::collections::hash::map::DefaultHasher as core::hash::Hasher>::write (1 samples, 0.53%)<core::hash::sip::SipHasher13 as core::hash::Hasher>::write (1 samples, 0.53%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::write (1 samples, 0.53%)<core::hash::sip::Sip13Rounds as core::hash::sip::Sip>::c_rounds (1 samples, 0.53%)core::cmp::impls::<impl core::cmp::PartialEq for usize>::eq (1 samples, 0.53%)core::iter::range::<impl core::iter::traits::iterator::Iterator for core::ops::range::Range<A>>::next (1 samples, 0.53%)core::ptr::non_null::NonNull<T>::cast (1 samples, 0.53%)core::ptr::swap_nonoverlapping_one (1 samples, 0.53%)hyper::proto::h1::dispatch::Dispatcher<D,Bs,I,T>::poll_write (1 samples, 0.53%)<hyper::body::body::Body as http_body::Body>::poll_data (1 samples, 0.53%)hyper::body::body::Body::poll_eof (1 samples, 0.53%)hyper::body::body::Body::poll_inner (1 samples, 0.53%)<futures_util::stream::try_stream::MapErr<St,F> as futures_core::stream::Stream>::poll_next (1 samples, 0.53%)<futures_util::stream::stream::map::Map<St,F> as futures_core::stream::Stream>::poll_next (1 samples, 0.53%)<futures_util::stream::try_stream::into_stream::IntoStream<St> as futures_core::stream::Stream>::poll_next (1 samples, 0.53%)<S as futures_core::stream::TryStream>::try_poll_next (1 samples, 0.53%)<futures_util::stream::try_stream::MapOk<St,F> as futures_core::stream::Stream>::poll_next (1 samples, 0.53%)<futures_util::stream::stream::map::Map<St,F> as futures_core::stream::Stream>::poll_next (1 samples, 0.53%)<futures_util::stream::try_stream::into_stream::IntoStream<St> as futures_core::stream::Stream>::poll_next (1 samples, 0.53%)<S as futures_core::stream::TryStream>::try_poll_next (1 samples, 0.53%)<tokio::stream::map::Map<St,F> as futures_core::stream::Stream>::poll_next (1 samples, 0.53%)core::task::poll::Poll<T>::map (1 samples, 0.53%)<tokio::stream::map::Map<St,F> as futures_core::stream::Stream>::poll_next::{{closure}} (1 samples, 0.53%)core::option::Option<T>::map (1 samples, 0.53%)<tokio::stream::map::Map<St,F> as futures_core::stream::Stream>::poll_next::{{closure}}::{{closure}} (1 samples, 0.53%)markov::main::{{closure}}::{{closure}}::{{closure}}::{{closure}} (1 samples, 0.53%)log::__private_api_log (1 samples, 0.53%)<env_logger::Logger as log::Log>::log (1 samples, 0.53%)std::thread::local::LocalKey<T>::try_with (1 samples, 0.53%)<env_logger::Logger as log::Log>::log::{{closure}} (1 samples, 0.53%)<env_logger::Logger as log::Log>::log::{{closure}} (1 samples, 0.53%)<alloc::boxed::Box<F> as core::ops::function::Fn<A>>::call (1 samples, 0.53%)pretty_env_logger::formatted_builder::{{closure}} (1 samples, 0.53%)std::io::Write::write_fmt (1 samples, 0.53%)core::fmt::write (1 samples, 0.53%)<&T as core::fmt::Display>::fmt (1 samples, 0.53%)<core::fmt::Arguments as core::fmt::Debug>::fmt (1 samples, 0.53%)<core::fmt::Arguments as core::fmt::Display>::fmt (1 samples, 0.53%)core::fmt::write (1 samples, 0.53%)<alloc::string::String as core::fmt::Debug>::fmt (1 samples, 0.53%)<str as core::fmt::Debug>::fmt (1 samples, 0.53%)core::char::methods::<impl char>::escape_debug (1 samples, 0.53%)core::char::methods::<impl char>::escape_debug_ext (1 samples, 0.53%)core::char::methods::<impl char>::is_grapheme_extended (1 samples, 0.53%)core::unicode::unicode_data::grapheme_extend::lookup (1 samples, 0.53%)core::unicode::unicode_data::skip_search (1 samples, 0.53%)core::slice::<impl [T]>::binary_search_by_key (1 samples, 0.53%)core::slice::<impl [T]>::binary_search_by (1 samples, 0.53%)<core::cmp::Ordering as core::cmp::PartialEq>::eq (1 samples, 0.53%)<core::slice::iter::ChunksExactMut<T> as core::iter::traits::iterator::Iterator>::next (1 samples, 0.53%)core::slice::<impl [T]>::split_at_mut (1 samples, 0.53%)core::slice::<impl [T]>::split_at_mut_unchecked (1 samples, 0.53%)rand_chacha::guts::refill_wide::impl_avx2 (2 samples, 1.06%)rand_chacha::guts::refill_wide::fn_impl (2 samples, 1.06%)rand_chacha::guts::refill_wide_impl (2 samples, 1.06%)rand_chacha::guts::round (1 samples, 0.53%)<ppv_lite86::x86_64::sse2::avx2::u32x4x4_avx2<NI> as ppv_lite86::types::RotateEachWord32>::rotate_each_word_right20 (1 samples, 0.53%)core::core_arch::x86::avx2::_mm256_srli_epi32 (1 samples, 0.53%)std::thread::Builder::spawn_unchecked::{{closure}} (1 samples, 0.53%)std::panic::catch_unwind (1 samples, 0.53%)std::panicking::try (1 samples, 0.53%)__rust_try (1 samples, 0.53%)std::panicking::try::do_call (1 samples, 0.53%)<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (1 samples, 0.53%)std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}} (1 samples, 0.53%)std::sys_common::backtrace::__rust_begin_short_backtrace (1 samples, 0.53%)tokio::runtime::blocking::pool::Spawner::spawn_thread::{{closure}} (1 samples, 0.53%)tokio::runtime::handle::Handle::enter (1 samples, 0.53%)tokio::runtime::context::enter (1 samples, 0.53%)tokio::runtime::blocking::pool::Spawner::spawn_thread::{{closure}}::{{closure}} (1 samples, 0.53%)tokio::runtime::blocking::pool::Inner::run (1 samples, 0.53%)tokio::runtime::task::Notified<S>::run (1 samples, 0.53%)tokio::runtime::task::raw::RawTask::poll (1 samples, 0.53%)tokio::runtime::task::raw::poll (1 samples, 0.53%)tokio::runtime::task::harness::Harness<T,S>::poll (1 samples, 0.53%)std::panic::catch_unwind (1 samples, 0.53%)std::panicking::try (1 samples, 0.53%)__rust_try (1 samples, 0.53%)std::panicking::try::do_call (1 samples, 0.53%)<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (1 samples, 0.53%)core::ops::function::FnOnce::call_once (1 samples, 0.53%)tokio::runtime::task::harness::Harness<T,S>::poll::{{closure}} (1 samples, 0.53%)tokio::runtime::task::core::Core<T,S>::poll (1 samples, 0.53%)tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (1 samples, 0.53%)tokio::runtime::task::core::Core<T,S>::poll::{{closure}} (1 samples, 0.53%)<tokio::runtime::blocking::task::BlockingTask<T> as core::future::future::Future>::poll (1 samples, 0.53%)tokio::runtime::thread_pool::worker::Launch::launch::{{closure}} (1 samples, 0.53%)tokio::runtime::thread_pool::worker::run (1 samples, 0.53%)tokio::macros::scoped_tls::ScopedKey<T>::set (1 samples, 0.53%)tokio::runtime::thread_pool::worker::run::{{closure}} (1 samples, 0.53%)tokio::runtime::thread_pool::worker::Context::run (1 samples, 0.53%)tokio::runtime::thread_pool::worker::Context::park (1 samples, 0.53%)tokio::runtime::thread_pool::worker::Context::park_timeout (1 samples, 0.53%)<tokio::runtime::park::Parker as tokio::park::Park>::park (1 samples, 0.53%)tokio::runtime::park::Inner::park (1 samples, 0.53%)tokio::runtime::park::Inner::park_driver (1 samples, 0.53%)<tokio::park::either::Either<A,B> as tokio::park::Park>::park (1 samples, 0.53%)<tokio::time::driver::Driver<T> as tokio::park::Park>::park (1 samples, 0.53%)tokio::time::driver::Driver<T>::process (1 samples, 0.53%)tokio::time::wheel::Wheel<T>::poll (1 samples, 0.53%)tokio::time::wheel::Wheel<T>::next_expiration (1 samples, 0.53%)<alloc::vec::Vec<T> as core::ops::index::Index<I>>::index (1 samples, 0.53%)<alloc::vec::Vec<T> as core::ops::deref::Deref>::deref (1 samples, 0.53%)core::slice::raw::from_raw_parts (1 samples, 0.53%)mio::poll::ReadinessQueue::poll (1 samples, 0.53%)mio::poll::ReadinessQueueInner::dequeue_node (1 samples, 0.53%)tokio::runtime::blocking::pool::Inner::run (21 samples, 11.11%)tokio::runtime::..tokio::runtime::task::Notified<S>::run (21 samples, 11.11%)tokio::runtime::..tokio::runtime::task::raw::RawTask::poll (21 samples, 11.11%)tokio::runtime::..tokio::runtime::task::raw::poll (21 samples, 11.11%)tokio::runtime::..tokio::runtime::task::harness::Harness<T,S>::poll (21 samples, 11.11%)tokio::runtime::..std::panic::catch_unwind (21 samples, 11.11%)std::panic::catc..std::panicking::try (21 samples, 11.11%)std::panicking::..__rust_try (21 samples, 11.11%)__rust_trystd::panicking::try::do_call (21 samples, 11.11%)std::panicking::..<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (21 samples, 11.11%)<std::panic::Ass..core::ops::function::FnOnce::call_once (21 samples, 11.11%)core::ops::funct..tokio::runtime::task::harness::Harness<T,S>::poll::{{closure}} (21 samples, 11.11%)tokio::runtime::..tokio::runtime::task::core::Core<T,S>::poll (21 samples, 11.11%)tokio::runtime::..tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (21 samples, 11.11%)tokio::loom::std..tokio::runtime::task::core::Core<T,S>::poll::{{closure}} (21 samples, 11.11%)tokio::runtime::..<tokio::runtime::blocking::task::BlockingTask<T> as core::future::future::Future>::poll (21 samples, 11.11%)<tokio::runtime:..tokio::runtime::thread_pool::worker::Launch::launch::{{closure}} (21 samples, 11.11%)tokio::runtime::..tokio::runtime::thread_pool::worker::run (21 samples, 11.11%)tokio::runtime::..tokio::macros::scoped_tls::ScopedKey<T>::set (21 samples, 11.11%)tokio::macros::s..tokio::runtime::thread_pool::worker::run::{{closure}} (21 samples, 11.11%)tokio::runtime::..tokio::runtime::thread_pool::worker::Context::run (21 samples, 11.11%)tokio::runtime::..tokio::runtime::thread_pool::worker::Context::park (21 samples, 11.11%)tokio::runtime::..tokio::runtime::thread_pool::worker::Context::park_timeout (21 samples, 11.11%)tokio::runtime::..<tokio::runtime::park::Parker as tokio::park::Park>::park (21 samples, 11.11%)<tokio::runtime:..tokio::runtime::park::Inner::park (21 samples, 11.11%)tokio::runtime::..tokio::runtime::park::Inner::park_driver (21 samples, 11.11%)tokio::runtime::..<tokio::park::either::Either<A,B> as tokio::park::Park>::park (21 samples, 11.11%)<tokio::park::ei..<tokio::time::driver::Driver<T> as tokio::park::Park>::park (21 samples, 11.11%)<tokio::time::dr..<tokio::park::either::Either<A,B> as tokio::park::Park>::park (21 samples, 11.11%)<tokio::park::ei..<tokio::io::driver::Driver as tokio::park::Park>::park (21 samples, 11.11%)<tokio::io::driv..tokio::io::driver::Driver::turn (21 samples, 11.11%)tokio::io::drive..mio::poll::Poll::poll (21 samples, 11.11%)mio::poll::Poll:..mio::poll::Poll::poll1 (21 samples, 11.11%)mio::poll::Poll:..mio::poll::Poll::poll2 (21 samples, 11.11%)mio::poll::Poll:..mio::sys::unix::epoll::Selector::select (20 samples, 10.58%)mio::sys::unix:..epoll_wait (20 samples, 10.58%)epoll_wait[unknown] (32 samples, 16.93%)[unknown]tokio::util::slab::generation::Generation::new (1 samples, 0.53%)__GI___call_tls_dtors (1 samples, 0.53%)std::thread::local::fast::destroy_value (1 samples, 0.53%)core::mem::drop (1 samples, 0.53%)core::ptr::drop_in_place (1 samples, 0.53%)core::ptr::drop_in_place (1 samples, 0.53%)core::ptr::drop_in_place (1 samples, 0.53%)core::ptr::drop_in_place (1 samples, 0.53%)core::ptr::drop_in_place (1 samples, 0.53%)core::ptr::drop_in_place (1 samples, 0.53%)<alloc::rc::Rc<T> as core::ops::drop::Drop>::drop (1 samples, 0.53%)core::ptr::drop_in_place (1 samples, 0.53%)core::ptr::drop_in_place (1 samples, 0.53%)core::ptr::drop_in_place (1 samples, 0.53%)core::ptr::drop_in_place (1 samples, 0.53%)core::ptr::drop_in_place (1 samples, 0.53%)core::ptr::drop_in_place (1 samples, 0.53%)core::ptr::drop_in_place (1 samples, 0.53%)core::ptr::drop_in_place (1 samples, 0.53%)<alloc::raw_vec::RawVec<T,A> as core::ops::drop::Drop>::drop (1 samples, 0.53%)<alloc::alloc::Global as core::alloc::AllocRef>::dealloc (1 samples, 0.53%)alloc::alloc::dealloc (1 samples, 0.53%)__GI___libc_free (1 samples, 0.53%)__GI___prctl (1 samples, 0.53%)core::ptr::drop_in_place (1 samples, 0.53%)<tokio::runtime::context::enter::DropGuard as core::ops::drop::Drop>::drop (1 samples, 0.53%)std::thread::local::LocalKey<T>::with (1 samples, 0.53%)std::thread::local::LocalKey<T>::try_with (1 samples, 0.53%)<tokio::runtime::context::enter::DropGuard as core::ops::drop::Drop>::drop::{{closure}} (1 samples, 0.53%)core::option::Option<T>::take (1 samples, 0.53%)core::mem::take (1 samples, 0.53%)core::mem::replace (1 samples, 0.53%)core::mem::swap (1 samples, 0.53%)core::ptr::swap_nonoverlapping_one (1 samples, 0.53%)core::ptr::swap_nonoverlapping (1 samples, 0.53%)core::mem::size_of (1 samples, 0.53%)std::thread::local::fast::Key<T>::try_register_dtor (1 samples, 0.53%)std::sys::unix::thread_local_dtor::register_dtor (1 samples, 0.53%)tokio::runtime::context::CONTEXT::__getit (2 samples, 1.06%)std::thread::local::fast::Key<T>::get (2 samples, 1.06%)std::thread::local::fast::Key<T>::try_initialize (2 samples, 1.06%)std::thread::local::lazy::LazyKeyInner<T>::initialize (1 samples, 0.53%)core::mem::replace (1 samples, 0.53%)core::mem::swap (1 samples, 0.53%)core::ptr::swap_nonoverlapping_one (1 samples, 0.53%)core::ptr::swap_nonoverlapping (1 samples, 0.53%)core::ptr::swap_nonoverlapping_bytes (1 samples, 0.53%)core::intrinsics::copy_nonoverlapping (1 samples, 0.53%)__memmove_avx_unaligned_erms (1 samples, 0.53%)std::thread::local::LocalKey<T>::with (4 samples, 2.12%)s..std::thread::local::LocalKey<T>::try_with (4 samples, 2.12%)s..tokio::runtime::context::enter::{{closure}} (1 samples, 0.53%)core::ptr::drop_in_place (1 samples, 0.53%)core::ptr::drop_in_place (1 samples, 0.53%)<core::cell::BorrowRefMut as core::ops::drop::Drop>::drop (1 samples, 0.53%)core::cell::Cell<T>::set (1 samples, 0.53%)core::cell::Cell<T>::replace (1 samples, 0.53%)core::mem::replace (1 samples, 0.53%)core::mem::swap (1 samples, 0.53%)core::ptr::swap_nonoverlapping_one (1 samples, 0.53%)core::mem::drop (4 samples, 2.12%)c..core::ptr::drop_in_place (4 samples, 2.12%)c..<std::sync::mutex::MutexGuard<T> as core::ops::drop::Drop>::drop (4 samples, 2.12%)<..std::sys_common::mutex::MovableMutex::raw_unlock (4 samples, 2.12%)s..std::sys::unix::mutex::Mutex::unlock (4 samples, 2.12%)s..__pthread_mutex_unlock_usercnt (4 samples, 2.12%)_..std::sync::condvar::Condvar::wait_timeout (16 samples, 8.47%)std::sync::c..std::sys_common::condvar::Condvar::wait_timeout (16 samples, 8.47%)std::sys_com..std::sys::unix::condvar::Condvar::wait_timeout (16 samples, 8.47%)std::sys::un..__pthread_cond_timedwait (16 samples, 8.47%)__pthread_co..std::sync::mutex::Mutex<T>::lock (4 samples, 2.12%)s..std::sys_common::mutex::MovableMutex::raw_lock (4 samples, 2.12%)s..std::sys::unix::mutex::Mutex::lock (4 samples, 2.12%)s..__GI___pthread_mutex_lock (4 samples, 2.12%)_..__lll_lock_wait (4 samples, 2.12%)_..tokio::runtime::thread_pool::worker::Context::park (35 samples, 18.52%)tokio::runtime::thread_pool::..tokio::runtime::thread_pool::worker::Context::park_timeout (35 samples, 18.52%)tokio::runtime::thread_pool::..<tokio::runtime::park::Parker as tokio::park::Park>::park (35 samples, 18.52%)<tokio::runtime::park::Parker..tokio::runtime::park::Inner::park (35 samples, 18.52%)tokio::runtime::park::Inner::..tokio::runtime::park::Inner::park_condvar (35 samples, 18.52%)tokio::runtime::park::Inner::..std::sync::condvar::Condvar::wait (35 samples, 18.52%)std::sync::condvar::Condvar::..std::sys_common::condvar::Condvar::wait (35 samples, 18.52%)std::sys_common::condvar::Con..std::sys::unix::condvar::Condvar::wait (35 samples, 18.52%)std::sys::unix::condvar::Cond..__pthread_cond_wait (35 samples, 18.52%)__pthread_cond_waittokio::runtime::thread_pool::worker::Context::run_task (1 samples, 0.53%)tokio::runtime::thread_pool::worker::Core::transition_from_searching (1 samples, 0.53%)tokio::runtime::thread_pool::worker::Shared::transition_worker_from_searching (1 samples, 0.53%)tokio::runtime::thread_pool::worker::Shared::notify_parked (1 samples, 0.53%)tokio::runtime::thread_pool::idle::Idle::worker_to_notify (1 samples, 0.53%)tokio::runtime::thread_pool::idle::Idle::notify_should_wakeup (1 samples, 0.53%)<tokio::loom::std::atomic_usize::AtomicUsize as core::ops::deref::Deref>::deref (1 samples, 0.53%)core::cell::UnsafeCell<T>::get (1 samples, 0.53%)core::option::Option<T>::or_else (1 samples, 0.53%)tokio::runtime::thread_pool::worker::Core::next_task::{{closure}} (1 samples, 0.53%)tokio::runtime::queue::Inject<T>::pop (1 samples, 0.53%)tokio::runtime::queue::Inject<T>::is_empty (1 samples, 0.53%)tokio::runtime::queue::Inject<T>::len (1 samples, 0.53%)tokio::runtime::thread_pool::worker::Core::next_task (2 samples, 1.06%)tokio::runtime::thread_pool::worker::Core::next_local_task (1 samples, 0.53%)core::option::Option<T>::or_else (1 samples, 0.53%)tokio::runtime::thread_pool::worker::Core::next_local_task::{{closure}} (1 samples, 0.53%)tokio::runtime::queue::Local<T>::pop (1 samples, 0.53%)tokio::loom::std::atomic_u16::AtomicU16::unsync_load (1 samples, 0.53%)core::sync::atomic::AtomicU16::get_mut (1 samples, 0.53%)core::cell::UnsafeCell<T>::get_mut (1 samples, 0.53%)std::panic::catch_unwind (68 samples, 35.98%)std::panic::catch_unwindstd::panicking::try (68 samples, 35.98%)std::panicking::try__rust_try (68 samples, 35.98%)__rust_trystd::panicking::try::do_call (68 samples, 35.98%)std::panicking::try::do_call<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (68 samples, 35.98%)<std::panic::AssertUnwindSafe<F> as core::ops::function::F..std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}} (68 samples, 35.98%)std::thread::Builder::spawn_unchecked::{{closure}}::{{clos..std::sys_common::backtrace::__rust_begin_short_backtrace (68 samples, 35.98%)std::sys_common::backtrace::__rust_begin_short_backtracetokio::runtime::blocking::pool::Spawner::spawn_thread::{{closure}} (68 samples, 35.98%)tokio::runtime::blocking::pool::Spawner::spawn_thread::{{c..tokio::runtime::handle::Handle::enter (68 samples, 35.98%)tokio::runtime::handle::Handle::entertokio::runtime::context::enter (68 samples, 35.98%)tokio::runtime::context::entertokio::runtime::blocking::pool::Spawner::spawn_thread::{{closure}}::{{closure}} (63 samples, 33.33%)tokio::runtime::blocking::pool::Spawner::spawn_thread:..tokio::runtime::blocking::pool::Inner::run (63 samples, 33.33%)tokio::runtime::blocking::pool::Inner::runtokio::runtime::task::Notified<S>::run (39 samples, 20.63%)tokio::runtime::task::Notified<S..tokio::runtime::task::raw::RawTask::poll (39 samples, 20.63%)tokio::runtime::task::raw::RawTa..tokio::runtime::task::raw::poll (39 samples, 20.63%)tokio::runtime::task::raw::polltokio::runtime::task::harness::Harness<T,S>::poll (39 samples, 20.63%)tokio::runtime::task::harness::H..std::panic::catch_unwind (39 samples, 20.63%)std::panic::catch_unwindstd::panicking::try (39 samples, 20.63%)std::panicking::try__rust_try (39 samples, 20.63%)__rust_trystd::panicking::try::do_call (39 samples, 20.63%)std::panicking::try::do_call<std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (39 samples, 20.63%)<std::panic::AssertUnwindSafe<F>..core::ops::function::FnOnce::call_once (39 samples, 20.63%)core::ops::function::FnOnce::cal..tokio::runtime::task::harness::Harness<T,S>::poll::{{closure}} (39 samples, 20.63%)tokio::runtime::task::harness::H..tokio::runtime::task::core::Core<T,S>::poll (39 samples, 20.63%)tokio::runtime::task::core::Core..tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut (39 samples, 20.63%)tokio::loom::std::unsafe_cell::U..tokio::runtime::task::core::Core<T,S>::poll::{{closure}} (39 samples, 20.63%)tokio::runtime::task::core::Core..<tokio::runtime::blocking::task::BlockingTask<T> as core::future::future::Future>::poll (39 samples, 20.63%)<tokio::runtime::blocking::task:..tokio::runtime::thread_pool::worker::Launch::launch::{{closure}} (39 samples, 20.63%)tokio::runtime::thread_pool::wor..tokio::runtime::thread_pool::worker::run (39 samples, 20.63%)tokio::runtime::thread_pool::wor..tokio::macros::scoped_tls::ScopedKey<T>::set (39 samples, 20.63%)tokio::macros::scoped_tls::Scope..tokio::runtime::thread_pool::worker::run::{{closure}} (39 samples, 20.63%)tokio::runtime::thread_pool::wor..tokio::runtime::thread_pool::worker::Context::run (39 samples, 20.63%)tokio::runtime::thread_pool::wor..tokio::runtime::thread_pool::worker::Core::steal_work (1 samples, 0.53%)tokio::runtime::queue::Steal<T>::steal_into (1 samples, 0.53%)tokio::runtime::queue::Steal<T>::steal_into2 (1 samples, 0.53%)core::sync::atomic::AtomicU32::load (1 samples, 0.53%)core::sync::atomic::atomic_load (1 samples, 0.53%)<alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once (70 samples, 37.04%)<alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::ca..<alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once (70 samples, 37.04%)<alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::ca..core::ops::function::FnOnce::call_once{{vtable-shim}} (70 samples, 37.04%)core::ops::function::FnOnce::call_once{{vtable-shim}}std::thread::Builder::spawn_unchecked::{{closure}} (70 samples, 37.04%)std::thread::Builder::spawn_unchecked::{{closure}}std::sys::unix::thread::guard::current (1 samples, 0.53%)__pthread_getattr_np (1 samples, 0.53%)__GI___clone (87 samples, 46.03%)__GI___clonestart_thread (79 samples, 41.80%)start_threadstd::sys::unix::thread::Thread::new::thread_start (78 samples, 41.27%)std::sys::unix::thread::Thread::new::thread_startcore::ptr::drop_in_place (8 samples, 4.23%)core:..<std::sys::unix::stack_overflow::Handler as core::ops::drop::Drop>::drop (8 samples, 4.23%)<std:..std::sys::unix::stack_overflow::imp::drop_handler (8 samples, 4.23%)std::..__GI_munmap (8 samples, 4.23%)__GI_..__vdso_clock_gettime (1 samples, 0.53%)all (189 samples, 100%)tokio-runtime-w (136 samples, 71.96%)tokio-runtime-walloc::collections::vec_deque::VecDeque<T>::wrap_add (1 samples, 0.53%) \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 22f352d..2d773a5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,7 +14,9 @@ fn buffered_read_all_lines io::Result<()>>( let mut read; let mut total=0; while {read = input.read_line(&mut buffer)?; read!=0} { - then(&buffer[..])?; + if buffer.trim().len() > 0 { + then(&buffer[..])?; + } buffer.clear(); total += read; }