Bağlantıyı kaldırmak rm'den daha hızlı mı?
Her ikisi de bir unlink()
sistem çağrısı olan aynı temel işleve sarıcıdır.
Kullanıcı arazileri arasındaki farkları tartmak.
rm(1)
:
unlink(1)
:
rm(1)
çoklu argüman verilmesi ile karşılaştırıldığında daha yavaştır.Farkı şu şekilde gösterebilirsiniz:
$ 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
Ancak, sistem unlink(2)
fonksiyonuna katkısız bir çağrıdan bahsediyorsak, şimdi farkettiğinizin muhtemelen sizin hesapladığınız şey olmadığını anlıyorum.
Dizinlerde ve dosyalarda benzer bir unlink()
sistemi gerçekleştirebilirsiniz. Ancak dizin diğer dizinlerin ve dosyaların üst öğesi ise, o üst öğenin bağlantısı kaldırılır, ancak çocuklar sarkık kalır. Hangi ideal daha az.
Düzenleme:
Maalesef unlink(1)
ve unlink(2)
arasındaki farkı açıklığa kavuşturdu. Anlambilim hala platform arasında farklılık gösterecektir.
Kaldırmanın yavaş kısmı, unlink () sistem çağrısının kullanıcı alanı hazırlığı değil dosya sistemi kodu ve disk şeyleridir.
Yani: hız farkı önemliyse, verileri dosya sisteminde saklamamanız gerekir.
unlink sadece bir rm "ışığı" dır. rm daha fazla özelliğe sahiptir ancak aynı şeyi yaparlar.