llil2grt start
get_properties : 16 secs
sort + output : 31 secs
total : 47 secs
Peak working set (memory): 2,744,200K
####
llil2grt start
get_properties : 11 secs
sort + output : 20 secs
total : 31 secs
2,152,848 Kbytes of RAM were used
##
##
my_Judy_test start
get_properties : 13 secs
sort + output : 7 secs
total : 20 secs
349,124 Kbytes of RAM were used
##
##
llil2grt start
get_properties CPU time : 4.252 secs
emplace set sort CPU time : 1.282 secs
write stdout CPU time : 1.716 secs
total CPU time : 7.254 secs
total wall clock time : 7 secs
Memory use (Windows Private Bytes): 1,626,728K
##
##
Read and parse input: 1.636
Classify, sum, sort: 2.206
Format and write output: 1.895
Total time: 5.737
Finished. Waiting for a key...
Peak working set (memory): 657,792K
##
##
NB. -----------------------------------------------------------
NB. --- This file is "llil.ijs"
NB. --- Run as e.g.:
NB.
NB. jconsole.exe llil.ijs big1.txt big2.txt big3.txt out.txt
NB.
NB. --- (NOTE: last arg is output filename, file is overwritten)
NB. -----------------------------------------------------------
args =: 2 }. ARGV
fn_out =: {: args
fn_in =: }: args
NUM_LENGTH =: 3
PAD_CHAR =: ' '
make_sel =: [: (1 2 0& |:) @ ,: ([ ,. ] - [: , [)
sort_some =: ([: /:~ {)`[`] }
text =: , freads " 0 fn_in
lf_pos =: I. text = LF
tab_pos =: I. text = TAB
words =: ((0 , >: }: lf_pos) make_sel tab_pos) ];.0 text
nums =: 0&". (tab_pos make_sel lf_pos) ; @: (<;.0) text
erase 'text' ; 'lf_pos' ; 'tab_pos'
t1 =: (6!:1) '' NB. time since engine start
nums =: words +//. nums
words =: ~. words
'words nums' =: (\: nums)& { &.:>"_1 words ; nums
starts =: I. ~: nums
ranges =: starts ,. (}. starts , # nums) - starts
count =: # starts
sort_words =: monad define
'ranges words' =. y
range =. ({. + i. @ {:) {. ranges
(}. ranges) ; range sort_some words
)
words =: > {: sort_words ^: count ranges ; words
erase 'starts' ; 'ranges'
t2 =: (6!:1) '' NB. time since engine start
nums =: (- NUM_LENGTH) ]\ NUM_LENGTH ": nums
text =: , words ,. TAB ,. (nums ,. CR) ,. LF
erase 'words' ; 'nums'
text =: (#~ ~: & PAD_CHAR) text
text fwrite fn_out
erase < 'text'
t3 =: (6!:1) '' NB. time since engine start
echo 'Read and parse input: ' , ": t1
echo 'Classify, sum, sort: ' , ": t2 - t1
echo 'Format and write output: ' , ": t3 - t2
echo 'Total time: ' , ": t3
echo ''
echo 'Finished. Waiting for a key...'
stdin ''
exit 0