From 42aaa1c1dd3b9a3a33b802ffb719161c1785208c Mon Sep 17 00:00:00 2001 From: Avril Date: Fri, 9 Oct 2020 18:12:43 +0100 Subject: [PATCH] empty --- chain.dat | Bin 0 -> 19349 bytes flamegraph.svg | 419 +++++++++++++++++++++++++++++++++++++++++++++++++ src/main.rs | 4 +- 3 files changed, 422 insertions(+), 1 deletion(-) create mode 100644 chain.dat create mode 100644 flamegraph.svg diff --git a/chain.dat b/chain.dat new file mode 100644 index 0000000000000000000000000000000000000000..3cb2549cbbf2ffe5c7450f04cb388b0d900956b7 GIT binary patch literal 19349 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 U>}T-&!f)|+BvXY658i;Ipa@2wkpKVy literal 0 HcmV?d00001 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; }