Skip to content

Instantly share code, notes, and snippets.

@Shimuuar
Created June 26, 2011 18:12
Show Gist options
  • Save Shimuuar/1047816 to your computer and use it in GitHub Desktop.
Save Shimuuar/1047816 to your computer and use it in GitHub Desktop.
Benchmark of dispatch by constructor
import Criterion.Main
----------------------------------------------------------------
-- Unit types
data U10 =
U10_01
| U10_02
| U10_03
| U10_04
| U10_05
| U10_06
| U10_07
| U10_08
| U10_09
| U10_10
data U30 =
U30_01
| U30_02
| U30_03
| U30_04
| U30_05
| U30_06
| U30_07
| U30_08
| U30_09
| U30_10
| U30_11
| U30_12
| U30_13
| U30_14
| U30_15
| U30_16
| U30_17
| U30_18
| U30_19
| U30_20
| U30_21
| U30_22
| U30_23
| U30_24
| U30_25
| U30_26
| U30_27
| U30_28
| U30_29
| U30_30
testU10 :: U10 -> ()
testU10 U10_01 = ()
testU10 U10_02 = ()
testU10 U10_03 = ()
testU10 U10_04 = ()
testU10 U10_05 = ()
testU10 U10_06 = ()
testU10 U10_07 = ()
testU10 U10_08 = ()
testU10 U10_09 = ()
testU10 U10_10 = ()
testU30 :: U30 -> ()
testU30 U30_01 = ()
testU30 U30_02 = ()
testU30 U30_03 = ()
testU30 U30_04 = ()
testU30 U30_05 = ()
testU30 U30_06 = ()
testU30 U30_07 = ()
testU30 U30_08 = ()
testU30 U30_09 = ()
testU30 U30_10 = ()
testU30 U30_11 = ()
testU30 U30_12 = ()
testU30 U30_13 = ()
testU30 U30_14 = ()
testU30 U30_15 = ()
testU30 U30_16 = ()
testU30 U30_17 = ()
testU30 U30_18 = ()
testU30 U30_19 = ()
testU30 U30_20 = ()
testU30 U30_21 = ()
testU30 U30_22 = ()
testU30 U30_23 = ()
testU30 U30_24 = ()
testU30 U30_25 = ()
testU30 U30_26 = ()
testU30 U30_27 = ()
testU30 U30_28 = ()
testU30 U30_29 = ()
testU30 U30_30 = ()
data I10 =
I10_01 Int
| I10_02 Int
| I10_03 Int
| I10_04 Int
| I10_05 Int
| I10_06 Int
| I10_07 Int
| I10_08 Int
| I10_09 Int
| I10_10 Int
data I30 =
I30_01 Int
| I30_02 Int
| I30_03 Int
| I30_04 Int
| I30_05 Int
| I30_06 Int
| I30_07 Int
| I30_08 Int
| I30_09 Int
| I30_10 Int
| I30_11 Int
| I30_12 Int
| I30_13 Int
| I30_14 Int
| I30_15 Int
| I30_16 Int
| I30_17 Int
| I30_18 Int
| I30_19 Int
| I30_20 Int
| I30_21 Int
| I30_22 Int
| I30_23 Int
| I30_24 Int
| I30_25 Int
| I30_26 Int
| I30_27 Int
| I30_28 Int
| I30_29 Int
| I30_30 Int
testI10 :: I10 -> Int
testI10 (I10_01 i) = i
testI10 (I10_02 i) = i
testI10 (I10_03 i) = i
testI10 (I10_04 i) = i
testI10 (I10_05 i) = i
testI10 (I10_06 i) = i
testI10 (I10_07 i) = i
testI10 (I10_08 i) = i
testI10 (I10_09 i) = i
testI10 (I10_10 i) = i
testI30 :: I30 -> Int
testI30 (I30_01 i) = i
testI30 (I30_02 i) = i
testI30 (I30_03 i) = i
testI30 (I30_04 i) = i
testI30 (I30_05 i) = i
testI30 (I30_06 i) = i
testI30 (I30_07 i) = i
testI30 (I30_08 i) = i
testI30 (I30_09 i) = i
testI30 (I30_10 i) = i
testI30 (I30_11 i) = i
testI30 (I30_12 i) = i
testI30 (I30_13 i) = i
testI30 (I30_14 i) = i
testI30 (I30_15 i) = i
testI30 (I30_16 i) = i
testI30 (I30_17 i) = i
testI30 (I30_18 i) = i
testI30 (I30_19 i) = i
testI30 (I30_20 i) = i
testI30 (I30_21 i) = i
testI30 (I30_22 i) = i
testI30 (I30_23 i) = i
testI30 (I30_24 i) = i
testI30 (I30_25 i) = i
testI30 (I30_26 i) = i
testI30 (I30_27 i) = i
testI30 (I30_28 i) = i
testI30 (I30_29 i) = i
testI30 (I30_30 i) = i
main :: IO ()
main = defaultMain [
bgroup "U10" [ bench "U10_01" $ nf testU10 U10_01
, bench "U10_02" $ nf testU10 U10_02
, bench "U10_03" $ nf testU10 U10_03
, bench "U10_04" $ nf testU10 U10_04
, bench "U10_05" $ nf testU10 U10_05
, bench "U10_06" $ nf testU10 U10_06
, bench "U10_07" $ nf testU10 U10_07
, bench "U10_08" $ nf testU10 U10_08
, bench "U10_09" $ nf testU10 U10_09
, bench "U10_10" $ nf testU10 U10_10
]
, bgroup "U30" [ bench "U30_01" $ nf testU30 U30_01
, bench "U30_02" $ nf testU30 U30_02
, bench "U30_03" $ nf testU30 U30_03
, bench "U30_04" $ nf testU30 U30_04
, bench "U30_05" $ nf testU30 U30_05
, bench "U30_06" $ nf testU30 U30_06
, bench "U30_07" $ nf testU30 U30_07
, bench "U30_08" $ nf testU30 U30_08
, bench "U30_09" $ nf testU30 U30_09
, bench "U30_10" $ nf testU30 U30_10
, bench "U30_11" $ nf testU30 U30_11
, bench "U30_12" $ nf testU30 U30_12
, bench "U30_13" $ nf testU30 U30_13
, bench "U30_14" $ nf testU30 U30_14
, bench "U30_15" $ nf testU30 U30_15
, bench "U30_16" $ nf testU30 U30_16
, bench "U30_17" $ nf testU30 U30_17
, bench "U30_18" $ nf testU30 U30_18
, bench "U30_19" $ nf testU30 U30_19
, bench "U30_20" $ nf testU30 U30_20
, bench "U30_21" $ nf testU30 U30_21
, bench "U30_22" $ nf testU30 U30_22
, bench "U30_23" $ nf testU30 U30_23
, bench "U30_24" $ nf testU30 U30_24
, bench "U30_25" $ nf testU30 U30_25
, bench "U30_26" $ nf testU30 U30_26
, bench "U30_27" $ nf testU30 U30_27
, bench "U30_28" $ nf testU30 U30_28
, bench "U30_29" $ nf testU30 U30_29
, bench "U30_30" $ nf testU30 U30_30
]
, bgroup "I10" [ bench "I10_01" $ nf testI10 (I10_01 123)
, bench "I10_02" $ nf testI10 (I10_02 123)
, bench "I10_03" $ nf testI10 (I10_03 123)
, bench "I10_04" $ nf testI10 (I10_04 123)
, bench "I10_05" $ nf testI10 (I10_05 123)
, bench "I10_06" $ nf testI10 (I10_06 123)
, bench "I10_07" $ nf testI10 (I10_07 123)
, bench "I10_08" $ nf testI10 (I10_08 123)
, bench "I10_09" $ nf testI10 (I10_09 123)
, bench "I10_10" $ nf testI10 (I10_10 123)
]
, bgroup "I30" [ bench "I30_01" $ nf testI30 (I30_01 123)
, bench "I30_02" $ nf testI30 (I30_02 123)
, bench "I30_03" $ nf testI30 (I30_03 123)
, bench "I30_04" $ nf testI30 (I30_04 123)
, bench "I30_05" $ nf testI30 (I30_05 123)
, bench "I30_06" $ nf testI30 (I30_06 123)
, bench "I30_07" $ nf testI30 (I30_07 123)
, bench "I30_08" $ nf testI30 (I30_08 123)
, bench "I30_09" $ nf testI30 (I30_09 123)
, bench "I30_10" $ nf testI30 (I30_10 123)
, bench "I30_11" $ nf testI30 (I30_11 123)
, bench "I30_12" $ nf testI30 (I30_12 123)
, bench "I30_13" $ nf testI30 (I30_13 123)
, bench "I30_14" $ nf testI30 (I30_14 123)
, bench "I30_15" $ nf testI30 (I30_15 123)
, bench "I30_16" $ nf testI30 (I30_16 123)
, bench "I30_17" $ nf testI30 (I30_17 123)
, bench "I30_18" $ nf testI30 (I30_18 123)
, bench "I30_19" $ nf testI30 (I30_19 123)
, bench "I30_20" $ nf testI30 (I30_20 123)
, bench "I30_21" $ nf testI30 (I30_21 123)
, bench "I30_22" $ nf testI30 (I30_22 123)
, bench "I30_23" $ nf testI30 (I30_23 123)
, bench "I30_24" $ nf testI30 (I30_24 123)
, bench "I30_25" $ nf testI30 (I30_25 123)
, bench "I30_26" $ nf testI30 (I30_26 123)
, bench "I30_27" $ nf testI30 (I30_27 123)
, bench "I30_28" $ nf testI30 (I30_28 123)
, bench "I30_29" $ nf testI30 (I30_29 123)
, bench "I30_30" $ nf testI30 (I30_30 123)
]
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment