X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=wavpack.git;a=blobdiff_plain;f=examples%2FWvInfo.hs;h=6631c7b47fcf9ebc6f864b0ef66c33b3d8044c25;hp=75c13ab3076510fefdb241e96c152d6fb3be79ab;hb=98a1dd78c7bb73c5d66f4773b63bbc5b94e7e618;hpb=fda0a74785ab6da03f98be513de5cd3bada1359d diff --git a/examples/WvInfo.hs b/examples/WvInfo.hs index 75c13ab..6631c7b 100644 --- a/examples/WvInfo.hs +++ b/examples/WvInfo.hs @@ -1,12 +1,10 @@ {-# LANGUAGE - UnboxedTuples - , UnicodeSyntax + UnicodeSyntax #-} module Main where import Codec.Audio.WavPack.Block import Codec.Audio.WavPack.Metadata import qualified Data.ByteString.Lazy as L -import qualified Data.Strict as S import Data.Maybe import Prelude.Unicode import System.Environment @@ -16,19 +14,13 @@ main ∷ IO () main = do [wvFile] ← getArgs wvData ← L.readFile wvFile hSetBuffering stdout NoBuffering - showWvInfo wvData - -showWvInfo ∷ L.ByteString → IO () -showWvInfo stream - = case findNextBlock stream of - (# S.Just block, _ #) - → printBlock block - (# S.Nothing , _ #) - → fail "Can't find any WavPack block headers." + mapM_ printBlock $ readBlocks wvData + putStrLn "* End of WavPack blocks" printBlock ∷ Block → IO () printBlock b - = do putStrLn "- Block header:" + = do putStrLn "* WavPack Block" + putStrLn "- Block header:" print $ blockHeader b putStrLn "- Block metadata sub-blocks:" mapM_ printSub $ blockMetadata b @@ -42,3 +34,18 @@ printBlock b ) | otherwise = print sub + +{- % du -sh 01.wv + 15716 + + When compiled with -O0: + % time ./dist/build/hs-wvinfo/hs-wvinfo 01.wv > /dev/null + 1.49s user 2.12s system 98% cpu 3.664 total + + When compiled with -O2: + % time ./dist/build/hs-wvinfo/hs-wvinfo 01.wv > /dev/null + 1.35s user 2.09s system 97% cpu 3.520 total + + Hmm... quite disappointing... The stringification is the + bottleneck? If so, I can live with that. +-}