##// 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:

r45238:9fc9526e default
r50794:3eef8baf default
Show More
Cargo.toml
22 lines | 474 B | application/toml | TOMLLexer
[package]
name = "chg"
version = "0.1.0"
authors = ["Yuya Nishihara <yuya@tcha.org>"]
description = "Client for Mercurial command server with cHg extension"
license = "GPL-2.0+"
edition = "2018"
[dependencies]
async-trait = "0.1"
bytes = "0.5"
futures = "0.3"
libc = "0.2"
log = { version = "0.4", features = ["std"] }
tokio-hglib = "0.3"
[dependencies.tokio]
version = "0.2"
features = ["rt-core", "io-util", "time", "process", "macros"]
[build-dependencies]
cc = "1.0"