2

我们正在尝试使用Criterion对二进制编码进行基准测试。由于数据类型是严格的,我们完全能够对打包请求的过程进行基准测试。

但是,通过尝试使用runPut对编码过程(请求到字节字符串)进行基准测试,我们更进一步,最终得到了 μs-results。这可能是由于惰性字节串评估。

encode = runPut . buildRqMessage

main = do

  randBytes <- getEntropy 1000000
  let !topicA = stringToTopic "performance-0"
  let !topicB = stringToTopic "performance-1"
  let !clientId = stringToClientId "benchmark-producer"
  let !bytes = [randBytes | x <- [1..1]]
  let !head = Head 0 0 clientId
  let !prod = [ ToTopic topicA [ ToPart 0 bytes ] ]

  defaultMain [
      bgroup "encode" [
             bench "pack" $ whnf (packPrRqMessage head) prod
           , bench "pack+build" $ whnf encode (packPrRqMessage head prod)
        ]
    ]

有没有办法适当地对编码过程进行基准测试?

4

0 回答 0