使用-x选项执行p4



我使用p4 -x file.txt选项来同步许多文件。我注意到性能受到了影响。

file.txt里面的文件大概有50万行。

和我比较了这两个命令:-

p4 -x file.txt sync
p4 sync ...

从我注意到的,-x似乎要慢得多,但我不确定是否真的是这样,或者只是我的网络/其他东西导致差异。

如果有人能分享,我将不胜感激

  • 关于-x选项的性能的一些见解
  • ,如果它确实较慢,是否有替代方案使它更快?

Thanks in advance.

两者之间的区别在于,对于-x,文件参数是单独传递的。这与在命令行运行p4 sync file1 file2 file3 ... file500000完全相同。(注意:从技术上讲,它们被进一步分成批次,大约200 IIRC,所以它实际上更像是运行2500个单独的同步命令,每个命令有200个参数。)

如果您将-Ztrack全局选项添加到命令中,您将获得许多性能跟踪输出,这有助于解释这一点,但缺点是,使用p4 sync ...,服务器能够从数据库中执行非常有效的批处理读取,以利用数据局域性的方式获取所有文件。在磁盘访问方面,它能够执行一次查找操作,然后执行大量的顺序读取操作。使用像p4 sync file1 file2 file3 ... file500000这样的命令,每个文件一次处理一个,作为单个记录的单个查找和单个读取,这使得磁盘访问模式更慢(仍然有数据局域性,但是数据库不再能够将读取优化到相同的程度)。

使用多参数语法,访问检查还需要单独应用于每个文件,而使用通配符模式时,服务器能够立即检查整个模式,以确定您是否有权访问该路径下的所有文件。(这对于I/O来说不是问题,但可能会增加一些计算时间。)

它的缺点是,在某种程度上,您可以将事物表示为简单的模式,这将总是比枚举单个文件更快。让我们从如何同步本地文件中的所有文件路径的XY问题后退一步——路径列表最初是如何生成的?也许可以直接将文件从等式中删除——也许它应该是一个标签而不是一个本地文件?也许它甚至可以是"自动的"。标签吗?

最新更新