您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python比编译的Haskell快吗?

Python比编译的Haskell快吗?

简而言之,不要使用read。替换read为以下函数

import Numeric

fastRead :: String -> Int
fastRead s = case readDec s of [(n, "")] -> n

我得到了相当不错的加速:

~/programming% time ./test.slow
./test.slow  9.82s user 0.06s system 99% cpu 9.901 total
~/programming% time ./test.fast
./test.fast  6.99s user 0.05s system 99% cpu 7.064 total
~/programming% time ./test.bytestring
./test.bytestring  4.94s user 0.06s system 99% cpu 5.026 total

只是为了好玩,上述结果包括一个使用ByteStringULTIMATE BARE-MetaL SPEED的版本(因此完全忽略了文件编码问题,因此未能通过“ 21世纪的就绪”测试)。它还有一些其他差异。例如,它附带了标准库的排序功能。完整代码如下。

import qualified Data.ByteString as BS
import Data.Attoparsec.ByteString.Char8
import Control.applicative
import Data.List

parser = many (decimal <* char '\n')

reallyParse p bs = case parse p bs of
    Partial f -> f BS.empty
    v -> v

main = do
    numbers <- BS.readFile "data"
    case reallyParse parser numbers of
        Done t r | BS.null t -> writeFile "sorted" . unlines . map show . sort $ r
python 2022/1/1 18:36:27 有230人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶