为什么命令的详细模式的 -v 会使速度变慢?

为什么命令的详细模式的 -v 会使速度变慢?

我正在执行一个脚本,通过测量他所做的时间,我发现在某些 mv 命令上使用 -v 会使速度慢得多,(所有输出都重定向到文件)。

那么为什么-v(详细模式)会使命令的执行速度变慢,例如:

mv file.txt newname.txtmv -v file.txt newname.txt处理数百万个文件时速度更快 ?

答案1

当程序每次运行时打印到文件时,它必须使用 IPC 与内核进行通信。重定向是必要的,然后文件系统必须实际写入缓冲的更改。这会破坏程序运行时间的调度,并且必须等待相对较长的时间来缓冲,然后简单地执行它正在执行的操作,其中大部分可能没有被 IO 锁定。这当然只是一个非常普遍的现象,并且在不同的命令中应用起来会有很大的不同。然而,无论如何,当使用详细标志执行时,无论如何都会被 IO 锁定的命令应该不太可能有那么不同。

答案2

因为冗长意味着做得更多。做得更多比做得更少需要更长的时间。

答案3

Verbose 调用终端上的处理信息并显示在屏幕上,Channel I/O 提示缓冲区高速缓存进行空间分配,而该空间通常在 verbose 中过于拥挤。这会耽误整个过程。因此,Verbose 使用更多资源,使其速度变慢。

相关内容