rust-cli / rust-cli/env_logger
Slowness
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 1.1k
- Forks
- 149
- Avg merge
- 2h 42m
- Merged PRs (30d)
- 4
Description
As soon as you enable RUST_LOG, even for just a small module that logs infrequently, the performance of your program is going to go drastically downhill.
Example: https://i.imgur.com/al4BJUn.png
+ 94.04% 0.39% rust-bitcoin-in rust-bitcoin-indexer [.] <serde_json::read::IoRead<R> as serde_json::read::Read<
+ 93.61% 0.48% rust-bitcoin-in rust-bitcoin-indexer [.] serde_json::read::next_or_eof
+ 93.19% 0.60% rust-bitcoin-in rust-bitcoin-indexer [.] std::io::read_one_byte
+ 92.55% 0.14% rust-bitcoin-in rust-bitcoin-indexer [.] std::io::impls::<impl std::io::Read for &'a mut R>::rea
+ 92.43% 1.50% rust-bitcoin-in rust-bitcoin-indexer [.] <hyper::client::response::Response as std::io::Read>::r
+ 91.04% 0.27% rust-bitcoin-in rust-bitcoin-indexer [.] <hyper::http::h1::Http11Message as std::io::Read>::read
+ 90.72% 2.96% rust-bitcoin-in rust-bitcoin-indexer [.] <hyper::http::h1::HttpReader<R> as std::io::Read>::read
- 86.85% 82.85% rust-bitcoin-in rust-bitcoin-indexer [.] log::__log
- 80.92% <serde_json::read::IoRead<R> as serde_json::read::Read<'de>>::parse_str
+ serde_json::read::next_or_eof
+ 4.00% log::__log
+ 1.91% jsonrpc::client::Client::send_request
+ 2.44% 0.02% rust-bitcoin-in rust-bitcoin-indexer [.] rust_bitcoin_indexer::db::parse_node_block
+ 2.20% 0.00% rust-bitcoin-in rust-bitcoin-indexer [.] jsonrpc::client::Client::send_request
+ 2.18% 0.00% rust-bitcoin-in rust-bitcoin-indexer [.] serde::de::impls::<impl serde::de::Deserialize<'de> for
+ 2.18% 0.00% rust-bitcoin-in rust-bitcoin-indexer [.] <&'a mut serde_json::de::Deserializer<R> as serde::de::
+ 2.17% 0.00% rust-bitcoin-in rust-bitcoin-indexer [.] serde_json::de::from_reader
+ 2.01% 1.91% rust-bitcoin-in rust-bitcoin-indexer [.] log::logger
+ 1.71% 0.43% rust-bitcoin-in rust-bitcoin-indexer [.] <env_logger::Logger as log::Log>::log
+ 1.59% 0.13% rust-bitcoin-in rust-bitcoin-indexer [.] core::fmt::write
+ 1.44% 1.21% rust-bitcoin-in rust-bitcoin-indexer [.] bitcoin::util::misc::he
As you can see, just because serde_json::read::Read has some trace! in parse_str somewhere, is completely destroying my program, for which I've enabled debugging just for my main module.
Is there anything that can be done about it?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the slowdown with RUST_LOG and profiling the logging path named in the report, especially log::__log, log::logger, and env_logger::Logger::log. Compare behavior with logging disabled and with a narrowly scoped module filter; done means identifying a supported performance improvement and validating it with measured profiling results and relevant regression coverage.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 28/100