연결 해제가 rm보다 더 빠릅니까?
답변1
둘 다 시스템 호출인 동일한 기본 기능에 대한 래퍼입니다 unlink()
.
사용자 영역 유틸리티 간의 차이점을 평가합니다.
rm(1)
:
- 더 많은 옵션.
- 더 많은 피드백.
- 건전성 검사.
- 위의 결과로 단일 호출의 경우 약간 느려집니다.
- 동시에 여러 인수를 사용하여 호출할 수 있습니다.
unlink(1)
:
- 온전성 검사가 적습니다.
- 디렉터리를 삭제할 수 없습니다.
- 재귀할 수 없습니다.
- 한 번에 하나의 인수만 사용할 수 있습니다.
- 단순성으로 인해 단일 통화에 비해 약간 더 간결합니다.
- 여러 인수를 제공하는 것과 비교하면 속도가 느려집니다
rm(1)
.
다음을 통해 차이점을 보여줄 수 있습니다.
$ touch $(seq 1 100)
$ unlink $(seq 1 100)
unlink: extra operand `2'
$ touch $(seq 1 100)
$ time rm $(seq 1 100)
real 0m0.048s
user 0m0.004s
sys 0m0.008s
$ touch $(seq 1 100)
$ time for i in $(seq 1 100); do rm $i; done
real 0m0.207s
user 0m0.044s
sys 0m0.112s
$ touch $(seq 1 100)
$ time for i in $(seq 1 100); do unlink $i; done
real 0m0.167s
user 0m0.048s
sys 0m0.120s
그러나 우리가 시스템 unlink(2)
기능에 대한 완전한 호출에 대해 이야기하고 있다면 아마도 당신이 설명하고 있는 것이 아닐 것입니다.
unlink()
디렉토리와 파일 모두에서 시스템을 수행할 수 있습니다 . 그러나 해당 디렉터리가 다른 디렉터리 및 파일의 상위 디렉터리인 경우 해당 상위 디렉터리에 대한 링크는 제거되지만 하위 디렉터리는 그대로 유지됩니다. 이상적이지 않습니다.
편집하다:
unlink(1)
죄송합니다. 및 의 차이점을 명확히 했습니다 unlink(2)
. 의미론은 여전히 플랫폼마다 다를 수 있습니다.
답변2
답변3
제거 시 느린 부분은 unlink() 시스템 호출을 위한 사용자 공간 준비가 아닌 파일 시스템 코드 및 디스크 관련 부분입니다.
즉, 속도 차이가 중요하다면 파일 시스템에 데이터를 저장하면 안 됩니다.
연결 해제는 단지 rm "빛"입니다. rm에는 더 많은 기능이 있지만 동일한 작업을 수행합니다.