perforce p4 与 -x 选项性能

perforce p4 with the -x option performance

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

file.txt 中的文件大约有 50 万行。

我比较了这两个命令:-

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

从我注意到的情况来看,-x 似乎慢得多,但我不确定是否真的如此,或者只是我的 network/other 东西导致了差异。

如果有人可以分享,将不胜感激

提前致谢。

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

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

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

简而言之,就您可以将事物表达为简单模式而言,这总是比枚举单个文件更快。从如何同步该本地文件中的所有文件路径的 XY 问题后退一步——该路径列表最初是如何生成的?直接从等式中删除文件是可能的——也许它应该是标签而不是本地文件?也许它甚至可以是一个“自动”标签?