gpt4 book ai didi

haskell - 如何发现事务是否经常中止?

转载 作者:行者123 更新时间:2023-12-03 22:40:56 24 4
gpt4 key购买 nike

我正在尝试调试使用 STM 的程序。 ThreadScope 读数指出了非常高的 CPU 事件,如您在此处看到的:

enter image description here

所以我试图找出这是否是由于经常中止的交易而发生的。我想到的第一件事是使用这样的东西来测试:

atomically $ do
someWork
...
`orElse` do
unsafeIOToSTM $ traceEventIO "transaction aborted!"
retry

但我不确定这是否正确,或者这是否是在 STM 场景中进行调试的最佳方法。有任何想法吗?

最佳答案

使用stm-stats包裹。它提供trackSTM你应该使用它来代替 atomically , 和 dumpSTMStats :: IO ()这将提供如下内容:

STM transaction statistics (2011-10-09 12:28:37.188951 UTC):
Transaction Commits Retries Ratio
_anonymous_ 1 0 0.00
reader 1 23 23.00
writer 23 0 0.00

(交易名称将自动生成,但有帮助设置您自己的。)

关于haskell - 如何发现事务是否经常中止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33661929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com