为什么使用尾巴来复制比CP慢得多的文件,而使用尴尬的速度很快



我正在尝试剥离大型CSV文件的标题线。但是我尝试的第一个方法(使用尾巴和尴尬)与复制整个文件相比如此之缓慢!

所以,只是为了娱乐,让我们尝试一些复制文件的愚蠢但潜在有趣的方法。

使用CP:

$ time cp my_big_file.csv copy_of_my_big_file.csv
real    0m2.208s
user    0m0.002s
sys     0m2.171s

使用尾巴:

$ time tail -n+1 my_big_file.csv > copy_of_my_big_file.csv
real    0m44.506s
user    0m37.521s
sys     0m3.107s

使用尴尬:

$ time awk '{if (NR!=0) {print}}' my_big_file.csv > copy_of_my_big_file.csv
real    0m24.951s
user    0m20.336s
sys     0m2.869s

使用尾巴与CP vs Awk之间的差异很大?

cp正在通过块复制fs块,而无需提出问题。大多数事情都在内核级别发生。

尾巴逐行读取,并进行一些过滤以逐线重新创建文件。当然,FS将在读写案例中进行缓冲,但是效率较低,原因必须越过几层(内核 - 用户空间),来回

相关内容

  • 没有找到相关文章

最新更新