git - 在 git 中,如果提交每个字符更改,大小会以什么速率增加?

标签 git big-o space-complexity

我正在尝试了解 Git 的工作原理。

如果我要更改(添加或删除)字符,请保存并提交该更改,直到我的代码编写完毕,文件变大时大小会如何增加?例如,提交 1 到 10、1 到 100、1 到 100 万甚至 1 到 100 万之间的大小增加差异是多少?

此外,提交更改是否会随着时间的推移而变慢?在第 n 次提交时它变得不可行?

最佳答案

你可以自己试试:

#! /bin/bash
set -eu

chars=({a..z})

rm -rf git
mkdir git
cd git
git init
git config user.email name@example.com

for (( i = 0; i <= 10000 ; ++i )) ; do
    printf ${chars[RANDOM % 26]} >> a
    time git add a
    time git commit -m "Change $i"
    du -s .git
done

如果速度太慢,请尝试运行 git gcgit repack

关于git - 在 git 中,如果提交每个字符更改,大小会以什么速率增加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55263896/

相关文章:

Github - 有时无法通过 ssh 连接

git - 为什么 git svn dcommit 会丢失本地分支的 merge 提交历史?

java - System.currentTimeMillis() 是 Java 中时间性能的最佳衡量标准吗?

python - 列表切片的大 O

java - HashSet.equals() 是否在恒定时间内运行?

c - 生成帕斯卡三角形的最佳方法

algorithm - 核外连通分量算法

git - 如何使 `git grep` 输出看起来像 `ack` 输出?

algorithm - 递归调用是否计入空间复杂度?

git - 本地存储库位于何处?