简单的 bash 脚本执行时间太长

简单的 bash 脚本执行时间太长

我在我的 for use 中编写了以下函数,.bashrc而不是rm *

function re()
{
   cp . -R /home/glset/ritwik/trash/
   rm *
}

它有效..但速度非常慢。即使对于小文件,执行也需要很长时间。依次触发这两个命令总是更快,但这首先就违背了该函数的目的。我在这里做错了什么吗?是什么导致需要更长的时间?

答案1

运行该函数或单独运行两个命令不会对执行时间产生任何可测量的差异。

我的猜测是您运行了该函数,发现它很慢,然后分别尝试了这些命令。

如果您这样做了,那么很可能第一次,数据不存在于磁盘缓存中,因此您测量的是从磁盘加载数据的时间。第二次,数据已经在磁盘缓存中(因为您刚刚访问过它),因此您测量了在内存中复制数据的时间。

要进行正确的基准测试,您需要在相同的条件下开始所有测量:要么您知道所有数据都在缓存中,要么您知道所有数据都必须从磁盘加载。


复制数据然后删除原始数据是一种非常奇怪的方法。而是跑mv!如果您在同一文件系统中移动文件,那么这是即时的。

此外,rm *这是一个非常不寻常的命令。如果您不再需要目录,请删除该目录:rm -r somedirmv somedir ~/trash/

相关内容