haskell-perf/sequences

Benchmarks for sequence data structures: lists, vectors, etc.

Haskell

91

88 commits

updated Jan 19, 2022

See the code

README

sequences

Benchmarks for sequence data structures: lists, vectors, etc.

Running

For all benchmarks:

$ stack bench :time

For specific benchmarks:

$ stack bench :time --benchmark-arguments Consing

Results

Results are ordered by least to most time.

Consing

Name10100100010000
Data.List3.457 ns4.099 ns3.425 ns0.003 μs
Data.DList5.757 ns5.268 ns5.568 ns0.005 μs
Data.Acc5.601 ns6.143 ns5.883 ns0.006 μs
Data.Sequence7.249 ns9.292 ns7.571 ns0.008 μs
Data.RRBVector23.07 ns60.90 ns63.95 ns0.070 μs
Data.Vector.Storable16.10 ns44.17 ns236.0 ns2.487 μs
Data.Vector.Unboxed14.35 ns58.29 ns233.6 ns2.504 μs
Data.Vector34.39 ns93.55 ns749.3 ns7.583 μs

Snocing

Name10100100010000
Data.DList5.532 ns5.019 ns6.397 ns0.006 μs
Data.Acc5.913 ns7.140 ns8.277 ns0.006 μs
Data.Sequence7.285 ns7.183 ns7.224 ns0.007 μs
Data.RRBVector22.92 ns60.99 ns54.70 ns0.055 μs
Data.Vector.Unboxed15.75 ns45.87 ns236.3 ns2.458 μs
Data.Vector.Storable15.35 ns50.05 ns309.1 ns2.401 μs
Data.Vector27.68 ns88.50 ns741.3 ns8.582 μs

Indexing

Name10100100010000
Data.Vector.Storable6.634 ns7.380 ns6.404 ns0.006 μs
Data.Vector6.851 ns9.825 ns12.79 ns0.007 μs
Data.Vector.Unboxed7.235 ns8.447 ns15.47 ns0.008 μs
Data.Massiv.Array11.08 ns14.58 ns9.754 ns0.009 μs
Data.RRBVector16.67 ns23.26 ns13.57 ns0.014 μs
Data.Sequence25.14 ns48.31 ns66.50 ns0.024 μs
Data.List17.55 ns213.3 ns3577 ns27.82 μs

Append

Name10100100010000
Data.DList8.959 ns8.967 ns0.022 μs0.015 μs
Data.Acc9.058 ns13.44 ns0.021 μs0.017 μs
Data.Sequence44.08 ns102.0 ns0.234 μs0.414 μs
Data.Vector.Unboxed24.02 ns69.99 ns0.571 μs6.627 μs
Data.Vector.Storable24.38 ns79.54 ns0.580 μs6.706 μs
Data.RRBVector45.98 ns705.1 ns3.848 μs6.971 μs
Data.Vector40.22 ns164.6 ns1.993 μs23.25 μs
Data.List72.52 ns781.1 ns15.43 μs192.0 μs

Length

Name10100100010000
Data.Vector.Storable8.156 ns8.277 ns0.009 μs0.009 μs
Data.Sequence9.241 ns8.856 ns0.010 μs0.009 μs
Data.RRBVector9.678 ns9.383 ns0.009 μs0.010 μs
Data.Vector10.54 ns9.682 ns0.010 μs0.010 μs
Data.Vector.Unboxed10.72 ns9.999 ns0.010 μs0.010 μs
Data.Massiv.Array10.46 ns10.20 ns0.010 μs0.011 μs
Data.List21.64 ns185.4 ns2.197 μs27.09 μs
Data.DList132.4 ns956.7 ns9.282 μs95.80 μs
Data.Acc122.5 ns1295 ns13.69 μs190.7 μs

Stable Sort

Name10100100010000
Data.Vector.Unboxed85.88 ns7.150 μs136.4 μs2.360 ms
Data.Vector.Storable73.52 ns6.466 μs142.7 μs2.445 ms
Data.Vector306.2 ns8.012 μs169.8 μs3.241 ms
Data.Sequence980.3 ns14.55 μs295.1 μs7.430 ms
Data.List502.1 ns15.58 μs288.9 μs9.445 ms

Replicate

Name10100100010000
Data.Vector.Unboxed32.34 ns96.80 ns0.532 μs3.522 μs
Data.Vector.Storable36.31 ns110.2 ns0.474 μs4.451 μs
Data.RRBVector263.3 ns460.7 ns3.015 μs33.00 μs
Data.Vector87.69 ns739.2 ns3.742 μs36.52 μs
Data.Sequence93.59 ns731.2 ns5.813 μs56.32 μs
Data.List114.2 ns2300 ns9.543 μs80.01 μs
Data.DList163.2 ns2108 ns10.40 μs92.43 μs

Min

Name10100100010000
Data.Vector.Storable16.02 ns0.081 μs0.769 μs8.157 μs
Data.Massiv.Array39.87 ns0.090 μs0.782 μs8.697 μs
Data.Vector.Unboxed17.54 ns0.096 μs0.842 μs9.815 μs
Data.Vector26.36 ns0.202 μs2.086 μs21.78 μs
Data.List26.50 ns0.290 μs2.903 μs29.08 μs
Data.RRBVector111.4 ns1.095 μs12.00 μs122.6 μs
Data.DList231.5 ns2.109 μs25.42 μs384.9 μs
Data.Sequence385.4 ns3.662 μs49.03 μs476.3 μs
Data.Acc383.4 ns3.811 μs45.25 μs813.3 μs

Max

Name10100100010000
Data.Vector.Storable16.40 ns0.102 μs0.771 μs7.069 μs
Data.Massiv.Array39.29 ns0.105 μs0.793 μs7.955 μs
Data.Vector.Unboxed24.51 ns0.132 μs1.126 μs11.23 μs
Data.Vector29.32 ns0.208 μs1.919 μs18.79 μs
Data.List30.56 ns0.341 μs2.867 μs29.62 μs
Data.RRBVector110.4 ns1.111 μs11.29 μs132.4 μs
Data.DList256.9 ns4.532 μs17.41 μs246.5 μs
Data.Sequence275.2 ns3.133 μs43.81 μs449.9 μs
Data.Acc353.5 ns3.778 μs40.18 μs977.2 μs

Filter Element

Name1100100010000
Data.Vector.Unboxed68.01 μs58.17 μs70.60 μs56.90 μs
Data.Vector101.1 μs90.79 μs86.63 μs87.79 μs
Data.Vector.Storable119.4 μs100.7 μs106.2 μs95.62 μs
Data.List102.6 μs148.6 μs148.8 μs99.55 μs
Data.Sequence436.2 μs315.9 μs265.4 μs298.9 μs

Filter By Index

Name1100100010000
Data.Vector.Unboxed70.23 μs119.1 μs95.71 μs72.42 μs
Data.Vector.Storable122.9 μs166.2 μs114.3 μs130.1 μs
Data.Vector188.4 μs179.2 μs342.2 μs222.0 μs

Contributors

chrisdone

62 commits

psibi

14 commits

konsumlamm

4 commits

Anton-Latukha

3 commits

haskell-perf/sequences

Benchmarks for sequence data structures: lists, vectors, etc.

Haskell

91

88 commits

updated Jan 19, 2022

See the code

README

sequences

Benchmarks for sequence data structures: lists, vectors, etc.

Running

For all benchmarks:

$ stack bench :time

For specific benchmarks:

$ stack bench :time --benchmark-arguments Consing

Results

Results are ordered by least to most time.

Consing

Name10100100010000
Data.List3.457 ns4.099 ns3.425 ns0.003 μs
Data.DList5.757 ns5.268 ns5.568 ns0.005 μs
Data.Acc5.601 ns6.143 ns5.883 ns0.006 μs
Data.Sequence7.249 ns9.292 ns7.571 ns0.008 μs
Data.RRBVector23.07 ns60.90 ns63.95 ns0.070 μs
Data.Vector.Storable16.10 ns44.17 ns236.0 ns2.487 μs
Data.Vector.Unboxed14.35 ns58.29 ns233.6 ns2.504 μs
Data.Vector34.39 ns93.55 ns749.3 ns7.583 μs

Snocing

Name10100100010000
Data.DList5.532 ns5.019 ns6.397 ns0.006 μs
Data.Acc5.913 ns7.140 ns8.277 ns0.006 μs
Data.Sequence7.285 ns7.183 ns7.224 ns0.007 μs
Data.RRBVector22.92 ns60.99 ns54.70 ns0.055 μs
Data.Vector.Unboxed15.75 ns45.87 ns236.3 ns2.458 μs
Data.Vector.Storable15.35 ns50.05 ns309.1 ns2.401 μs
Data.Vector27.68 ns88.50 ns741.3 ns8.582 μs

Indexing

Name10100100010000
Data.Vector.Storable6.634 ns7.380 ns6.404 ns0.006 μs
Data.Vector6.851 ns9.825 ns12.79 ns0.007 μs
Data.Vector.Unboxed7.235 ns8.447 ns15.47 ns0.008 μs
Data.Massiv.Array11.08 ns14.58 ns9.754 ns0.009 μs
Data.RRBVector16.67 ns23.26 ns13.57 ns0.014 μs
Data.Sequence25.14 ns48.31 ns66.50 ns0.024 μs
Data.List17.55 ns213.3 ns3577 ns27.82 μs

Append

Name10100100010000
Data.DList8.959 ns8.967 ns0.022 μs0.015 μs
Data.Acc9.058 ns13.44 ns0.021 μs0.017 μs
Data.Sequence44.08 ns102.0 ns0.234 μs0.414 μs
Data.Vector.Unboxed24.02 ns69.99 ns0.571 μs6.627 μs
Data.Vector.Storable24.38 ns79.54 ns0.580 μs6.706 μs
Data.RRBVector45.98 ns705.1 ns3.848 μs6.971 μs
Data.Vector40.22 ns164.6 ns1.993 μs23.25 μs
Data.List72.52 ns781.1 ns15.43 μs192.0 μs

Length

Name10100100010000
Data.Vector.Storable8.156 ns8.277 ns0.009 μs0.009 μs
Data.Sequence9.241 ns8.856 ns0.010 μs0.009 μs
Data.RRBVector9.678 ns9.383 ns0.009 μs0.010 μs
Data.Vector10.54 ns9.682 ns0.010 μs0.010 μs
Data.Vector.Unboxed10.72 ns9.999 ns0.010 μs0.010 μs
Data.Massiv.Array10.46 ns10.20 ns0.010 μs0.011 μs
Data.List21.64 ns185.4 ns2.197 μs27.09 μs
Data.DList132.4 ns956.7 ns9.282 μs95.80 μs
Data.Acc122.5 ns1295 ns13.69 μs190.7 μs

Stable Sort

Name10100100010000
Data.Vector.Unboxed85.88 ns7.150 μs136.4 μs2.360 ms
Data.Vector.Storable73.52 ns6.466 μs142.7 μs2.445 ms
Data.Vector306.2 ns8.012 μs169.8 μs3.241 ms
Data.Sequence980.3 ns14.55 μs295.1 μs7.430 ms
Data.List502.1 ns15.58 μs288.9 μs9.445 ms

Replicate

Name10100100010000
Data.Vector.Unboxed32.34 ns96.80 ns0.532 μs3.522 μs
Data.Vector.Storable36.31 ns110.2 ns0.474 μs4.451 μs
Data.RRBVector263.3 ns460.7 ns3.015 μs33.00 μs
Data.Vector87.69 ns739.2 ns3.742 μs36.52 μs
Data.Sequence93.59 ns731.2 ns5.813 μs56.32 μs
Data.List114.2 ns2300 ns9.543 μs80.01 μs
Data.DList163.2 ns2108 ns10.40 μs92.43 μs

Min

Name10100100010000
Data.Vector.Storable16.02 ns0.081 μs0.769 μs8.157 μs
Data.Massiv.Array39.87 ns0.090 μs0.782 μs8.697 μs
Data.Vector.Unboxed17.54 ns0.096 μs0.842 μs9.815 μs
Data.Vector26.36 ns0.202 μs2.086 μs21.78 μs
Data.List26.50 ns0.290 μs2.903 μs29.08 μs
Data.RRBVector111.4 ns1.095 μs12.00 μs122.6 μs
Data.DList231.5 ns2.109 μs25.42 μs384.9 μs
Data.Sequence385.4 ns3.662 μs49.03 μs476.3 μs
Data.Acc383.4 ns3.811 μs45.25 μs813.3 μs

Max

Name10100100010000
Data.Vector.Storable16.40 ns0.102 μs0.771 μs7.069 μs
Data.Massiv.Array39.29 ns0.105 μs0.793 μs7.955 μs
Data.Vector.Unboxed24.51 ns0.132 μs1.126 μs11.23 μs
Data.Vector29.32 ns0.208 μs1.919 μs18.79 μs
Data.List30.56 ns0.341 μs2.867 μs29.62 μs
Data.RRBVector110.4 ns1.111 μs11.29 μs132.4 μs
Data.DList256.9 ns4.532 μs17.41 μs246.5 μs
Data.Sequence275.2 ns3.133 μs43.81 μs449.9 μs
Data.Acc353.5 ns3.778 μs40.18 μs977.2 μs

Filter Element

Name1100100010000
Data.Vector.Unboxed68.01 μs58.17 μs70.60 μs56.90 μs
Data.Vector101.1 μs90.79 μs86.63 μs87.79 μs
Data.Vector.Storable119.4 μs100.7 μs106.2 μs95.62 μs
Data.List102.6 μs148.6 μs148.8 μs99.55 μs
Data.Sequence436.2 μs315.9 μs265.4 μs298.9 μs

Filter By Index

Name1100100010000
Data.Vector.Unboxed70.23 μs119.1 μs95.71 μs72.42 μs
Data.Vector.Storable122.9 μs166.2 μs114.3 μs130.1 μs
Data.Vector188.4 μs179.2 μs342.2 μs222.0 μs

Contributors

chrisdone

62 commits

psibi

14 commits

konsumlamm

4 commits

Anton-Latukha

3 commits

Languages

Haskell

100.0%