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