小编kee*_*gan的帖子

为什么通过分而治之的方式对Data.Sequence求和更快,即使没有并行性?

我正在玩a并行缩减Data.Sequence.Seq,我注意到即使没有并行性,分而治之也能提供速度优势.有谁知道为什么?

这是我的代码:

import qualified Data.Sequence as S
import qualified Data.Foldable as F

import System.Random
import Control.DeepSeq
import Criterion.Main
import Test.QuickCheck
import Control.Exception ( evaluate )

instance (Arbitrary a) => Arbitrary (S.Seq a) where
    arbitrary = fmap S.fromList arbitrary

instance NFData a => NFData (S.Seq a) where
    rnf = F.foldr seq ()

funs :: [(String, S.Seq Int -> Int)]
funs =
    [ ("seqDirect"   , seqDirect)
    , ("seqFoldr"    , seqFoldr)
    , ("seqFoldl'"   , seqFoldl')
    , ("seqSplit  1" , (seqSplit  1)) …
Run Code Online (Sandbox Code Playgroud)

performance haskell

27
推荐指数
1
解决办法
783
查看次数

标签 统计

haskell ×1

performance ×1