Estoy leyendo 512^2 espacios dobles delimitados en blanco escritos en un archivo de texto en mi programa Erlang al conectarlos a stdin.¿Cómo es que mi IO funciona tan lentamente en Erlang?
En Erlang esto toma 2m25s, en un programa Haskell equivalente lleva 3s, así que debo ir en contra de la forma Erlang de hacerlo de alguna manera.
¿Estoy usando las primitivas IO de Erlang de una manera estúpida, o hay algún otro problema con mi programa?
Tenga en cuenta que no me importa el orden de los valores en la lista resultante, por lo que no hay operación inversa.
Erlang:
-module(iotest).
-import(io).
-export([main/0]).
main() ->
Values = read(),
io:write(Values).
read() -> read([]).
read(Acc) ->
case io:fread("", "~f") of
{ok, Value} -> read([Value | Acc]);
eof -> Acc
end.
Haskell:
module IOTest (
main
) where
main :: IO()
main = do
text <- getContents
let values = map read (words text) :: [Double]
putStrLn $ show values
return()
Muchas gracias por cualquier ayuda.
También parece que el programa Erlang generará la lista de números en orden inverso. – augustss