2

svn ls -v怎么可能比普通的svn ls 长约250 倍?

即使使用 file:// 模式,我使用哪种传输似乎也没有什么区别。我也尝试启用 memcached,但也没有任何改进。

有趣的是在顶层目录中这个命令是最慢的,我越深入它得到的越快。目录中有多少项目似乎并不重要。

我对客户端和服务器都使用 svn 版本 1.7.1。和 FSFS 回购格式。

这里的时间

svn ls -v svn://trac/koh/  0.01s user 0.01s system 0% cpu 39.960 total
svn ls svn://trac/koh/  0.00s user 0.02s system 6% cpu 0.243 total
4

2 回答 2

1

有可能svn ls能够在本地使用工作目录中的信息,而svn ls -v必须返回服务器以获取所需的信息。它也可能是要查询的信息量。svn ls只需要文件名,同时也svn ls需要修订和最后作者。

但是,我没有发现时间要长 250 倍:

$ time svn ls

real    0m0.514s
user    0m0.046s
sys     0m0.061s

$ time svn ls -v

real    0m0.530s
user    0m0.000s
sys     0m0.109s

这发生在所有客户端上还是仅发生在您所在的机器上?这是 Windows 还是 Unix/Linux?您要列出的目录有多大?当您执行 时,工作目录中是否有更改svn ls?或者,您是否一直在使用 URL,所以它必须转到服务器?您是否注意到其他任何速度问题?

于 2012-08-24T13:16:32.350 回答
1

我发现“svn ls -v svn://svn”会导致“get-locks”服务器日志消息,这是花费时间的地方。我们的存储库文件系统是 NFS。许多“getattr”和“lookup”NFS 调用发生。所以出于某种原因,SVN 服务器正在为获取锁做很多属性获取。

我还没找到这是什么原因...

于 2017-01-24T12:05:42.593 回答