2
I持って次のスニペット:私は守っ何今定数が返されるのはなぜですか?
import Network.MessagePackRpc.Server
ping :: String -> IO String
ping s = return s
main :: IO()
main = do
serve 8081 [ ("add", fun add), ("ping", fun ping) ]
、その私は、例えば文字列を送信するとき1024バイトの文字列が100000と同じ場合、小さなスニペットは約2秒で実行されます。私が行って、リターンsを例えばと置き換えると。 return "the-1024-byte-string"
これは約25%速く実行されます。私はこれを上下に行使した。その影響はとても大きいと私は本当に驚いています。誰か説明がありますか?
私は怠惰がここで何かをしていると思います。 'ping!s = 1024バイト文字列"を返しますか? " – fuz
'-O2'でコンパイルしていますか? '-O2'と' -fllvm'でコンパイルされたテストを最初にテストすることなく、あなたがSOのパフォーマンスに関する質問をすることは許されません。 –
@ ThomasM.DuBuisson Gevalt!私はllvmを持っていません。 (幸いにも私は現在パフォーマンスに関する質問もありません) –