我正在尝试剥离大型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将在读写案例中进行缓冲,但是效率较低,原因必须越过几层(内核 - 用户空间),来回