aboutsummaryrefslogtreecommitdiff
path: root/bench/Main.hs
blob: 99c3f1d1da5dbe09abb326469f5d0eeb9454a676 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{-# LANGUAGE TypeApplications #-}
module Main where

import Criterion
import Criterion.Main

import qualified Numeric.AD as AD

import qualified Numeric.ADDual as ADD
import Numeric.ADDual.Examples


main :: IO ()
main = defaultMain
  [env (pure (makeNeuralInput 100)) $ \input ->
    bgroup "neural-100"
      [bench "dual" $ nf (\inp -> ADD.gradient' @Double fneural inp 1.0) input
      ,bench "ad" $ nf (\inp -> AD.grad fneural inp) input]
  ,env (pure (makeNeuralInput 500)) $ \input ->
    bgroup "neural-500"
      [bench "dual" $ nf (\inp -> ADD.gradient' @Double fneural inp 1.0) input
      ,bench "ad" $ nf (\inp -> AD.grad fneural inp) input]
  ,env (pure (makeNeuralInput 2000)) $ \input ->
    bgroup "neural-2000"
      [bench "dual" $ nf (\inp -> ADD.gradient' @Double fneural inp 1.0) input
      ,bench "ad" $ nf (\inp -> AD.grad fneural inp) input]
  ]