diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,21 @@
 # Changelog
 
+## [1.1.0.0] - 2022-08-30
+
+### Added
+
+* `shrinkValidBench`
+* `shrinkBench`
+* `shrinkBenchN`
+* `shrinkBenchVector`
+
+### Changed
+
+* Renamed `genBenchSizes` to `genBench` and removed the old `genBench`.
+* Changed the generator benchmarks to generate 100 values instead of 1.
+  This corresponds to how long the generating part of a property test might take
+  and corrects for some of the difference in generating different values.
+
 ## [1.0.0.0] - 2021-11-20
 
 ### Changed
diff --git a/bench/Main.hs b/bench/Main.hs
--- a/bench/Main.hs
+++ b/bench/Main.hs
@@ -16,33 +16,70 @@
 main :: IO ()
 main =
   Criterion.defaultMain
-    [ genValidBench @(),
-      genValidBench @Bool,
-      genValidBench @Ordering,
-      genValidBench @Char,
-      genValidBench @Int,
-      genValidBench @(Int, Int),
-      genValidBench @(Int, Int, Int),
-      genValidBench @(Int, Int, Int, Int),
-      genValidBench @(Maybe Int),
-      genValidBench @(Either Int Int),
-      genValidBench @[Int],
-      genValidBench @[[Int]],
-      genValidBench @(NonEmpty Int),
-      genValidBench @(NonEmpty (NonEmpty Int)),
-      genValidBench @(Ratio Int),
-      genValidBench @Int8,
-      genValidBench @Int16,
-      genValidBench @Int32,
-      genValidBench @Int64,
-      genValidBench @Integer,
-      genValidBench @Word8,
-      genValidBench @Word16,
-      genValidBench @Word32,
-      genValidBench @Word64,
-      genValidBench @Natural,
-      genValidBench @Float,
-      genValidBench @Double,
-      genValidBench @(Fixed E12),
-      genValidBench @String
+    [ bgroup
+        "generators"
+        [ genValidBench @(),
+          genValidBench @Bool,
+          genValidBench @Ordering,
+          genValidBench @Char,
+          genValidBench @Int,
+          genValidBench @(Int, Int),
+          genValidBench @(Int, Int, Int),
+          genValidBench @(Int, Int, Int, Int),
+          genValidBench @(Maybe Int),
+          genValidBench @(Either Int Int),
+          genValidBench @[Int],
+          genValidBench @[[Int]],
+          genValidBench @(NonEmpty Int),
+          genValidBench @(NonEmpty (NonEmpty Int)),
+          genValidBench @(Ratio Int),
+          genValidBench @Rational,
+          genValidBench @Int8,
+          genValidBench @Int16,
+          genValidBench @Int32,
+          genValidBench @Int64,
+          genValidBench @Integer,
+          genValidBench @Word8,
+          genValidBench @Word16,
+          genValidBench @Word32,
+          genValidBench @Word64,
+          genValidBench @Natural,
+          genValidBench @Float,
+          genValidBench @Double,
+          genValidBench @(Fixed E12),
+          genValidBench @String
+        ],
+      bgroup
+        "shrinkers"
+        [ shrinkValidBench @(),
+          shrinkValidBench @Bool,
+          shrinkValidBench @Ordering,
+          shrinkValidBench @Char,
+          shrinkValidBench @Int,
+          shrinkValidBench @(Int, Int),
+          shrinkValidBench @(Int, Int, Int),
+          shrinkValidBench @(Int, Int, Int, Int),
+          shrinkValidBench @(Maybe Int),
+          shrinkValidBench @(Either Int Int),
+          shrinkValidBench @[Int],
+          shrinkValidBench @[[Int]],
+          shrinkValidBench @(NonEmpty Int),
+          shrinkValidBench @(NonEmpty (NonEmpty Int)),
+          shrinkValidBench @(Ratio Int),
+          shrinkValidBench @Rational,
+          shrinkValidBench @Int8,
+          shrinkValidBench @Int16,
+          shrinkValidBench @Int32,
+          shrinkValidBench @Int64,
+          shrinkValidBench @Integer,
+          shrinkValidBench @Word8,
+          shrinkValidBench @Word16,
+          shrinkValidBench @Word32,
+          shrinkValidBench @Word64,
+          shrinkValidBench @Natural,
+          shrinkValidBench @Float,
+          shrinkValidBench @Double,
+          shrinkValidBench @(Fixed E12),
+          shrinkValidBench @String
+        ]
     ]
diff --git a/genvalidity-criterion.cabal b/genvalidity-criterion.cabal
--- a/genvalidity-criterion.cabal
+++ b/genvalidity-criterion.cabal
@@ -1,18 +1,18 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.34.4.
+-- This file has been generated from package.yaml by hpack version 0.34.7.
 --
 -- see: https://github.com/sol/hpack
 
 name:           genvalidity-criterion
-version:        1.0.0.0
+version:        1.1.0.0
 synopsis:       Criterion benchmarks for generators
 category:       Validity
 homepage:       https://github.com/NorfairKing/validity#readme
 bug-reports:    https://github.com/NorfairKing/validity/issues
 author:         Tom Sydney Kerckhove
 maintainer:     syd@cs-syd.eu
-copyright:      Copyright: (c) 2016-2021 Tom Sydney Kerckhove
+copyright:      Copyright: (c) 2016-2022 Tom Sydney Kerckhove
 license:        MIT
 license-file:   LICENSE
 build-type:     Simple
@@ -37,6 +37,7 @@
     , criterion
     , deepseq
     , genvalidity >=1.0
+    , vector
   default-language: Haskell2010
 
 benchmark genvalidity-criterion-bench
diff --git a/src/Data/GenValidity/Criterion.hs b/src/Data/GenValidity/Criterion.hs
--- a/src/Data/GenValidity/Criterion.hs
+++ b/src/Data/GenValidity/Criterion.hs
@@ -5,9 +5,12 @@
 -- | Benchmarks for generators
 module Data.GenValidity.Criterion
   ( genValidBench,
-    genBenchSizes,
     genBench,
     genBenchSized,
+    shrinkValidBench,
+    shrinkBench,
+    shrinkBenchN,
+    shrinkBenchVector,
   )
 where
 
@@ -15,6 +18,8 @@
 import Criterion
 import Data.GenValidity
 import Data.Typeable
+import Data.Vector (Vector)
+import qualified Data.Vector as V
 import Test.QuickCheck.Gen
 import Test.QuickCheck.Random
 
@@ -23,23 +28,55 @@
   forall a.
   (Typeable a, NFData a, GenValid a) =>
   Benchmark
-genValidBench = genBenchSizes (unwords ["genValid", nameOf @a]) (genValid @a)
+genValidBench = genBench (unwords ["genValid", nameOf @a]) (genValid @a)
 
 -- | Benchmarks a generator with some default sizes
-genBenchSizes :: NFData a => String -> Gen a -> Benchmark
-genBenchSizes name gen =
+genBench :: NFData a => String -> Gen a -> Benchmark
+genBench name gen =
   bgroup name $
     let bi i = genBenchSized ("size " <> show i) i gen
      in [bi 15, bi 30]
 
--- | Benchmarks a generator with a given name with the default size: 30
-genBench :: NFData a => String -> Gen a -> Benchmark
-genBench name = genBenchSized name 30
-
 -- | Benchmarks a generator with a given name and size
 genBenchSized :: NFData a => String -> Int -> Gen a -> Benchmark
-genBenchSized name size (MkGen genFunc) =
-  bench name $ nf (\seed -> genFunc seed size) (mkQCGen 42)
+genBenchSized name size gen =
+  let MkGen genFunc = V.replicateM 100 gen
+   in bench name $ nf (\seed -> genFunc seed size) (mkQCGen 42)
+
+-- | Benchmark for the time it takes to shrink to the first ten shrunk versions using 'shrinkValid' and a vector of 100 deterministically generated values.
+shrinkValidBench ::
+  forall a.
+  (Typeable a, NFData a, GenValid a) =>
+  Benchmark
+shrinkValidBench =
+  shrinkBench
+    (unwords ["shrinkValid", nameOf @a])
+    (shrinkValid @a)
+
+-- | Benchmark for the time it takes to shrink to the first ten shrunk versions using a given shrinking function and a vector of 100 deterministically generated values.
+shrinkBench :: (GenValid a, NFData a) => String -> (a -> [a]) -> Benchmark
+shrinkBench = shrinkBenchN 100
+
+-- | Benchmark for the time it takes to shrink to the first ten shrunk versions using a given shrinking function and a vector of N deterministically generated values.
+shrinkBenchN :: forall a. (GenValid a, NFData a) => Int -> String -> (a -> [a]) -> Benchmark
+shrinkBenchN n name shrinker =
+  withArgs n $ \args -> shrinkBenchVector args name shrinker
+
+-- | Benchmark for the time it takes to shrink to the first ten shrunk versions using a given shrinking function and a given vector of values
+shrinkBenchVector :: forall a. NFData a => Vector a -> String -> (a -> [a]) -> Benchmark
+shrinkBenchVector args name shrinker =
+  bench
+    name
+    (nf (V.map (take 10 . shrinker)) (args :: Vector a))
+
+withArgs :: (NFData arg, GenValid arg) => Int -> (Vector arg -> Benchmark) -> Benchmark
+withArgs n = env (pure (generateDeterministically $ V.replicateM n genValid))
+
+generateDeterministically :: Gen a -> a
+generateDeterministically (MkGen f) = f seed size
+  where
+    seed = mkQCGen 42
+    size = 30
 
 nameOf ::
   forall a.
