brew.sh: cache HOMEBREW_VERSION on disk.
This is a (relatively, for this Bash script) expensive operation that
can be trivially cached so: let's do so.
Speedup on my machine:
```
$ hyperfine "brew --version" "HOMEBREW_VERSION_CACHE=1 brew --version"
Benchmark 1: brew --version
Time (mean ± σ): 173.4 ms ± 5.1 ms [User: 28.7 ms, System: 67.0 ms]
Range (min … max): 167.3 ms … 182.9 ms 15 runs
Benchmark 2: HOMEBREW_VERSION_CACHE=1 brew --version
Time (mean ± σ): 145.9 ms ± 4.0 ms [User: 22.4 ms, System: 33.9 ms]
Range (min … max): 140.0 ms … 154.5 ms 17 runs
Summary
HOMEBREW_VERSION_CACHE=1 brew --version ran
1.19 ± 0.05 times faster than brew --version
```
Co-authored-by: Bo Anderson <mail@boanderson.me>
This commit is contained in:
parent
8378cc825d
commit
2b363b904c
@ -495,7 +495,27 @@ setup_git() {
|
||||
setup_curl
|
||||
setup_git
|
||||
|
||||
HOMEBREW_VERSION="$("${HOMEBREW_GIT}" -C "${HOMEBREW_REPOSITORY}" describe --tags --dirty --abbrev=7 2>/dev/null)"
|
||||
GIT_DESCRIBE_CACHE="${HOMEBREW_REPOSITORY}/.git/describe-cache"
|
||||
GIT_REVISION=$("${HOMEBREW_GIT}" -C "${HOMEBREW_REPOSITORY}" rev-parse HEAD 2>/dev/null)
|
||||
if [[ -n "${GIT_REVISION}" ]]
|
||||
then
|
||||
GIT_DESCRIBE_CACHE_FILE="${GIT_DESCRIBE_CACHE}/${GIT_REVISION}"
|
||||
if [[ -f "${GIT_DESCRIBE_CACHE_FILE}" ]]
|
||||
then
|
||||
HOMEBREW_VERSION="$(cat "${GIT_DESCRIBE_CACHE_FILE}")"
|
||||
else
|
||||
rm -rf "${GIT_DESCRIBE_CACHE}"
|
||||
HOMEBREW_VERSION="$("${HOMEBREW_GIT}" -C "${HOMEBREW_REPOSITORY}" describe --tags --dirty --abbrev=7 2>/dev/null)"
|
||||
mkdir -p "${GIT_DESCRIBE_CACHE}"
|
||||
echo "${HOMEBREW_VERSION}" >"${GIT_DESCRIBE_CACHE_FILE}"
|
||||
fi
|
||||
unset GIT_DESCRIBE_CACHE_FILE
|
||||
else
|
||||
rm -rf "${GIT_DESCRIBE_CACHE}"
|
||||
fi
|
||||
unset GIT_REVISION
|
||||
unset GIT_DESCRIBE_CACHE
|
||||
|
||||
HOMEBREW_USER_AGENT_VERSION="${HOMEBREW_VERSION}"
|
||||
if [[ -z "${HOMEBREW_VERSION}" ]]
|
||||
then
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user