小编Ste*_*son的帖子

为什么我的IO在Erlang中运行得如此之慢?

我正在通过将它们传递给stdin来读取512 ^ 2空格分隔的文本文件中写入的双精度到我的Erlang程序.

在Erlang中,这需要2m25s,在等效的Haskell程序中需要3s,所以我必须反对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.
Run Code Online (Sandbox Code Playgroud)

哈斯克尔:

module IOTest (
    main
) where

main :: IO ()

main = do
    text <- getContents
    let values = map read (words text) :: [Double]
    putStrLn $ show values
    return ()
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助.

erlang haskell

8
推荐指数
1
解决办法
563
查看次数

标签 统计

erlang ×1

haskell ×1