Ter*_*ska 5 erlang performance webserver haskell
我想测试haskell warp http服务器的性能(每秒请求数).我对haskell一无所知.我想和下面的erlang代码一样:
在haskell中如何做到这一点?
二郎:
-module(test).
-export([start/0]).
start() ->
{ok, Bin} = file:read_file("page.txt"),
misultin:start_link([{port, 3000}, {loop, fun(Req) -> Req:ok(Bin) end}]).
Run Code Online (Sandbox Code Playgroud)
我遇到了这个haskell示例,我需要修改它以使用从文件加载的内容.
哈斯克尔:
{-# LANGUAGE OverloadedStrings #-}
import Network.Wai
import Network.Wai.Handler.Warp
import Blaze.ByteString.Builder (fromByteString)
import Network.HTTP.Types (status200)
main = run 3000 $ const $ return $ ResponseBuilder
status200
[("Content-Type", "text/plain"), ("Content-Length", "4")]
$ fromByteString "TEST"
Run Code Online (Sandbox Code Playgroud)
请帮忙!:)
小智 6
ByteString使用hGetContentsfrom 读取文件的内容作为严格Data.ByteString,然后将其传递给Blaze fromByteString:
{-# LANGUAGE OverloadedStrings #-}
import Network.Wai
import Network.Wai.Handler.Warp
import Blaze.ByteString.Builder (fromByteString)
import Network.HTTP.Types (status200)
import System.IO (withBinaryFile, IOMode (..))
import Data.ByteString (hGetContents)
main = do
contents <- withBinaryFile "full/path/to/page.txt" ReadMode hGetContents
run 3000 $ const $ return $ ResponseBuilder
status200
[("Content-Type", "text/plain"), ("Content-Length", "4")]
$ fromByteString contents
Run Code Online (Sandbox Code Playgroud)
我没有在Windows上使用相对路径,但这可能只是我缺乏Haskell-fu.