perl 5에서는 wc -l
oneliner를 사용하여 에뮬레이션 할 수 있습니다 .
perl -lnE 'END {say $.}' test.txt
Raku에서이 기능을 구현하는 방법
이것을 구현하려고하면 :
raku -e 'say "test.txt".IO.open.lines.elems'
속도가 느리고 많은 메모리를 사용합니다.
재생산을위한 정보 :
$ wget http://eforexcel.com/wp/wp-content/uploads/2017/07/1500000%20Sales%20Records.zip
$ unzip "1500000 Sales Records.zip"
$ mv "1500000 Sales Records.csv" part.txt
$ for i in `seq 1 10`; do cat part.txt >> test.txt ; done
$ du -sh test.txt
1.8G test.txt
$ time wc -l test.txt
15000000 test.txt
real 0m0,350s
user 0m0,143s
sys 0m0,205s
$ time perl -lnE 'END { say $. }' test.txt
15000001
real 0m1,981s
user 0m1,719s
sys 0m0,256s
$ time raku -e 'say "test.txt".IO.open.lines.elems'
15000001
real 2m51,852s
user 0m25,129s
sys 0m6,378s
# Using swap (maximum uses 2.2G swap):
# Before `raku -e ''`
$ free -m
total used free shared buff/cache available
Mem: 15009 1695 12604 107 708 12917
Swap: 7583 0 7583
# After `raku -e ''`
$ free -m
total used free shared buff/cache available
Mem: 15009 752 13923 72 332 13899
Swap: 7583 779 6804
# Swap not used
$ time raku -ne '++$ andthen END .say' test.txt
15000001
real 1m44,906s
user 2m14,165s
sys 0m0,653s
$ raku -v
This is Rakudo version 2019.11 built on MoarVM version 2019.11
implementing Perl 6.d.
raku
) 여전히 raku -v
출력을 얻는 것이 좋습니다 . 또한 현재 제안 타이밍 출력을 추가하는 것을 고려하십시오. 또한 'ascii'
이번 주말에 더 좋은 시간을 만들기 위해 디코더 로 전환하는 것을 고려할 수 있습니다.
-l
perl에 대한 플래그는 perl을 크게 느리게 하며이 경우 유용하지 않습니다. 내 컴퓨터에서 임의의 줄 길이와 약 200k 줄의 파일을 제거 -l
하면 결과가 40 % 향상됩니다.
wc
(파일 크기 포함) 을 추가 할 수 있습니까 ? 감사합니다.