diff --git a/bits-extra.cabal b/bits-extra.cabal
--- a/bits-extra.cabal
+++ b/bits-extra.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: f1235903f58a81c0f08887434cf1f4d5f429fe42f569c18cd857a34eab86ecd6
+-- hash: f52076e751b0944ea7b218edc2e2d7ec7fcb8feffbf0f8cf878143b993b6ff9f
 
 name:           bits-extra
-version:        0.0.1.0
+version:        0.0.1.1
 description:    Please see the README on Github at <https://github.com/haskell-works/bits-extra#readme>
 homepage:       https://github.com/haskell-works/bits-extra#readme
 bug-reports:    https://github.com/haskell-works/bits-extra/issues
diff --git a/src/Data/Bits/BitSize.hs b/src/Data/Bits/BitSize.hs
--- a/src/Data/Bits/BitSize.hs
+++ b/src/Data/Bits/BitSize.hs
@@ -1,3 +1,6 @@
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TypeApplications    #-}
+
 module Data.Bits.BitSize where
 
 import Data.Functor.Identity
@@ -74,6 +77,6 @@
   bitSize = DV.foldl (\a b -> a + bitSize b) 0
   {-# INLINE bitSize #-}
 
-instance (BitSize a, DVS.Storable a) => BitSize (DVS.Vector a) where
-  bitSize = DVS.foldl (\a b -> a + bitSize b) 0
+instance forall a. (BitSize a, DVS.Storable a) => BitSize (DVS.Vector a) where
+  bitSize v = DVS.length v * bitSize @a undefined
   {-# INLINE bitSize #-}
