Goofing around to see if we can beatwc in Elixir
System.cmd("wc",["-l", file])
with native Elixir code
def chunkynifs(path, chunksize \\ @chunk_size) do
File.stream!(path, [], chunksize)
|> Enum.reduce(0, fn(chunk, total) -> total + count(chunk) end)
end
defp count(binary) do
search = :binary.compile_pattern(<<"\n">>)
:erlang.length(:binary.matches(binary, search))
end
Timing Results