【发布时间】:2011-05-13 11:24:43
【问题描述】:
我最近遇到了一行有趣的代码,它会等到某个特定的文件恢复正常:
sleep 1 until -e $file;
虽然从表面上看,这条线符合人们的预期,但我不禁觉得这里有些不对劲;编写以下内容似乎更自然:
while (1) {
sleep 1;
last if -e $file;
}
文件测试运算符是否仅用于if 和unless?在while 条件中部署此类操作符是否有任何性能损失?
【问题讨论】:
-
性能???这里唯一的惩罚是 ping 文件系统,这比任何循环都要大一个数量级......
-
@Drakosha :您希望典型的文件 ping 需要多长时间?一秒钟的睡眠还不足以对抗延迟吗?
-
是的,看起来在任何普通文件系统/存储上都有足够的时间。我只是不明白你为什么要检查循环性能,这里可以忽略不计。
标签: perl file-exists