##// END OF EJS Templates
worker: avoid reading 1 byte at a time from the OS pipe...
worker: avoid reading 1 byte at a time from the OS pipe Apparently `pickle.load` does a lot of small reads, many of them literally 1-byte, so it benefits greatly from buffering. This change enables the buffering, at the cost of more complicated interaction with the `selector` API. On one repository with ~400k files this reduces the time by about ~30s, from ~60 to ~30s. The difference is so large because the actual updating work is parallellized, while these small reads are bottlenecking the central hg process.

File last commit:

r46277:57b5452a default
r50794:3eef8baf default
Show More
Cargo.toml
28 lines | 819 B | application/toml | TOMLLexer
[package]
name = "hgcli"
version = "0.1.0"
build = "build.rs"
authors = ["Gregory Szorc <gregory.szorc@gmail.com>"]
edition = "2018"
license = "GPL-2.0"
readme = "README.md"
[[bin]]
name = "hg"
path = "src/main.rs"
[dependencies]
jemallocator-global = { version = "0.3", optional = true }
[dependencies.pyembed]
git = "https://github.com/indygreg/PyOxidizer.git"
rev = "4697fb25918dfad6dc73288daeea501063963a08"
default-features = false
[features]
default = ["build-mode-pyoxidizer-exe"]
jemalloc = ["jemallocator-global", "pyembed/jemalloc"]
build-mode-pyoxidizer-exe = ["pyembed/build-mode-pyoxidizer-exe"]
build-mode-prebuilt-artifacts = ["pyembed/build-mode-prebuilt-artifacts"]
cpython-link-unresolved-static = ["pyembed/cpython-link-unresolved-static"]
cpython-link-default = ["pyembed/cpython-link-default"]