content: {-# OPTIONS_GHC -fno-warn-orphans #-}
  {-# LANGUAGE BangPatterns #-}
  
  -- | Benchmark memory allocations.
  
  module Main where
  
  import           Control.DeepSeq
  import qualified Data.ByteString as S
  import qualified Text.XML.Hexml as Hexml
  import           Weigh
  import qualified Xeno.DOM
  import qualified Xeno.DOM.Robust
  import qualified Xeno.SAX
  
  main :: IO ()
  main = do
    f4kb <- S.readFile "data/books-4kb.xml"
    f31kb <- S.readFile "data/text-31kb.xml"
    f211kb <- S.readFile "data/fabricated-211kb.xml"
    mainWith
      (do func "4kb_hexml_dom" Hexml.parse f4kb
          func "4kb_xeno_sax" Xeno.SAX.validate f4kb
          func "4kb_xeno_dom" Xeno.DOM.parse f4kb
          func "4kb_xeno_dom-with-recovery" Xeno.DOM.Robust.parse f4kb
          func "31kb_hexml_dom" Hexml.parse f31kb
          func "31kb_xeno_sax" Xeno.SAX.validate f31kb
          func "31kb_xeno_dom" Xeno.DOM.parse f31kb
          func "31kb_xeno_dom-with-recovery" Xeno.DOM.Robust.parse f31kb
          func "211kb_hexml_dom" Hexml.parse f211kb
          func "211kb_xeno_sax" Xeno.SAX.validate f211kb
          func "211kb_xeno_dom" Xeno.DOM.parse f211kb
          func "211kb_xeno_dom-with-recovery" Xeno.DOM.Robust.parse f211kb)
  
  instance NFData Hexml.Node where
    rnf !_ = ()
  