Skip to content

jasonmoo/wc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#wc a faster wc (mostly)

  • Same speed as native wc for line/byte counts.
  • 3x faster word counts
  • 30x faster multibyte runes counts

Relies on performance gained from multithreaded processing on buffer chunks.

./wc [-l] [-m] [-w] [-b] file [...fileN]
  -c=false: count bytes
  -l=false: count lines
  -m=false: count multibyte runes
  -w=false: count words

# count lines
time ./wc -l 100m.lines;
 100000000 100m.lines

real	0m1.155s
user	0m3.875s
sys	    0m0.389s

time wc -l 100m.lines 
 100000000 100m.lines

real	0m1.138s
user	0m0.920s
sys	    0m0.209s

# count words
time ./wc -w 100m.lines;
 108339058 100m.lines

real	0m2.119s
user	0m7.289s
sys	    0m0.438s

time wc -w 100m.lines 
 108339058 100m.lines

real	0m5.888s
user	0m5.650s
sys	    0m0.237s

# count multibyte characters
time ./wc -m 100m.lines;
 1093761047 100m.lines

real	0m0.677s
user	0m1.981s
sys	    0m0.348s

time wc -m 100m.lines 
 1093761047 100m.lines

real	0m18.468s
user	0m18.186s
sys	    0m0.268s

# count bytes
time ./wc -c 100m.lines;
 1093761047 100m.lines

real	0m0.420s
user	0m0.176s
sys	    0m0.298s

time wc -c 100m.lines 
 1093761047 100m.lines

real	0m0.003s
user	0m0.001s
sys	    0m0.002s

/usr/sbin/system_profiler -detailLevel full SPHardwareDataType
Hardware:

    Hardware Overview:

      Model Name: MacBook Air
      Model Identifier: MacBookAir6,2
      Processor Name: Intel Core i5
      Processor Speed: 1.3 GHz
      Number of Processors: 1
      Total Number of Cores: 2
      L2 Cache (per Core): 256 KB
      L3 Cache: 3 MB
      Memory: 4 GB
      ...

##Build and Use

git clone git@github.com:jasonmoo/wc.git
cd wc/cmd
go get
go build wc.go

Releases

No releases published

Packages

No packages published

Languages