我正在玩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)