Tôi đang đọc 512^2 khoảng trống được phân cách bằng dấu cách trắng được viết trong một tệp văn bản vào chương trình Erlang của tôi bằng cách đặt chúng vào tiêu chuẩn.Làm thế nào đến IO của tôi chạy quá chậm trong Erlang?
Trong Erlang điều này mất 2m25s, trong một chương trình Haskell tương đương phải mất 3s, vì vậy tôi phải đi ngược lại cách Erlang để làm điều đó theo một cách nào đó.
Tôi có sử dụng nguyên mẫu IO của Erlang theo cách ngu xuẩn hay có vấn đề gì khác với chương trình của tôi không?
Lưu ý rằng tôi không quan tâm đến thứ tự của các giá trị trong danh sách kết quả, do đó không có hoạt động ngược lại.
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()
Cảm ơn rất nhiều sự giúp đỡ nào.
Dường như chương trình Erlang sẽ tạo danh sách các số ngược lại. – augustss