Я читаю 512 ^ 2 двойных символа, разделенных пробелами, записанных в текстовом файле, в мою программу Erlang путем передачи их в stdin.
В Erlang это занимает 2м25 с, в эквивалентной программе на Haskell это занимает 3 с, поэтому я, должно быть, иду в некотором смысле против Эрланга.
Я тупо использую примитивы ввода-вывода Эрланга или что-то не так с моей программой?
Обратите внимание, что мне не важен порядок значений в результирующем списке, поэтому нет обратной операции.
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 ()
Большое спасибо за любую помощь.