相关疑难解决方法(0)

如何通过缓冲加速Haskell IO?

我在"真实世界Haskell"(第7章,第189页)中读到了IO缓冲,并尝试测试不同的缓冲大小如何影响性能.

import System.IO
import Data.Time.Clock
import Data.Char(toUpper)

main :: IO ()
main = do
  hInp <- openFile "bigFile.txt" ReadMode
  let bufferSize = truncate $ 2**10
  hSetBuffering hInp (BlockBuffering (Just bufferSize))
  bufferMode <- hGetBuffering hInp
  putStrLn $ "Current buffering mode: " ++ (show bufferMode)

  startTime <- getCurrentTime
  inp <- hGetContents hInp
  writeFile "processed.txt" (map toUpper inp)
  hClose hInp
  finishTime <- getCurrentTime
  print $ diffUTCTime finishTime startTime
  return ()
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个"bigFile.txt"

-rw-rw-r-- 1 user user 96M ???.  26 09:49 bigFile.txt
Run Code Online (Sandbox Code Playgroud)

并使用不同的缓冲区大小对此文件运行我的程序:

Current buffering …
Run Code Online (Sandbox Code Playgroud)

io performance haskell buffering

4
推荐指数
1
解决办法
305
查看次数

标签 统计

buffering ×1

haskell ×1

io ×1

performance ×1