나는 Erlang 프로그램에 텍스트 파일로 쓰여진 512^2 공백으로 구분 된 double을 stdin에 파이프하여 읽습니다.Erlang에서 IO가 너무 느리게 실행되는 이유는 무엇입니까?
얼랑 (Erlang)에서는 2m25s가 걸리고, 하스켈 프로그램에서는 3 초가 걸리기 때문에 어떤 방식 으로든 얼랑 (Erlang) 방식에 반대해야합니다.
얼랭 (Erlang)의 IO 프리미티브를 어리석은 방식으로 사용하고 있습니까? 아니면 내 프로그램에 뭔가 다른 것이 있습니까?
결과 목록에서 값의 순서는 신경 쓰지 않으므로 역순으로 수행 할 필요가 없습니다.
얼랑 :
-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.
하스켈 : 어떤 도움 주셔서 대단히
module IOTest (
main
) where
main :: IO()
main = do
text <- getContents
let values = map read (words text) :: [Double]
putStrLn $ show values
return()
감사합니다.
Erlang 프로그램이 역순으로 숫자 목록을 생성하는 것처럼 보입니다. – augustss