पर्ल 5 में, आप wc -l
ऑनलाइनर का उपयोग करके अनुकरण कर सकते हैं :
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
पर्ल के लिए झंडा पर्ल को काफी धीमा कर देता है और यह इस मामले में उपयोगी नहीं है। यादृच्छिक लाइन की लंबाई और लगभग 200k लाइनों वाली फ़ाइल के लिए मेरी मशीन पर, -l
40% सुधार के परिणाम निकालते हैं ।
wc
(जो फ़ाइल आकार शामिल होना चाहिए) का वास्तविक आउटपुट जोड़ सकते हैं । धन्यवाद।