[toc]
测试Linux下删除大量文件的效率
创建50万个测试文件
//创建50万个文件
mkdir /test && cd /test
time for i in $(seq 1 500000);do echo text >>$i.txt;done
real 1m9.177s
user 0m9.731s
sys 0m48.238s
//总大小为2G
du -sh /test/
2.0G /test/
1.rm删除
time rm -rf *
-bash: /usr/bin/rm: Argument list too long
real 0m1.709s
user 0m1.580s
sys 0m0.123s
文件太多,rm不起作用
2.find删除
time find ./ -type f -exec rm {} \;
real 10m56.698s
user 2m13.203s
sys 8m35.653s
用时10分钟
3.find with delete
time find ./ -type f -delete
real 0m26.757s
user 0m1.222s
sys 0m23.112s
用时26秒
4.rsync删除
//先建立一个空文件夹test-bak
mkdir test-bak
time rsync -a --delete test-bak/ /test/
real 0m25.440s
user 0m1.364s
sys 0m22.082s
用时25秒
5.python2.7
import os
import timeit
def main():
for pathname,dirnames,filenames in os.walk('/test'):
for filename in filenames:
file=os.path.join(pathname,filename)
os.remove(file)
if __name__=='__main__':
t=timeit.Timer('main()','from __main__ import main')
print t.timeit(1)
用时35秒
6.perl
time perl -e 'for(<*>){((stat)[9]<(unlink))}'
real 0m33.891s
user 0m2.590s
sys 0m28.254s
用时33秒