为什么常数返回得更快?

时间:2011-12-07 17:46:55

标签: haskell

我有以下代码段:

import Network.MessagePackRpc.Server

ping :: String -> IO String
ping s = return s

main :: IO ()
main = do
  serve 8081 [ ("add", fun add), ("ping", fun ping) ]

现在,我观察到的是当我发送一个字符串时,例如100000个相同的1024字节字符串,小片段大约运行2秒。如果我去用例如return "the-1024-byte-string"然后运行速度提高约25%。我已经上下运动了。我真的很惊讶,影响是如此巨大。有人有解释吗?

1 个答案:

答案 0 :(得分:3)

返回已知(在编译时)常量可以启用更多内联。但是,必须检查生成的代码才能确定。