Still on the ICFPC 2007 topic

I am curious about one thing. If I read the file applying hGetContents to a ByteString (Lazy or Strict) or a String, it seems to read much faster than the version where I construct a sequence.


    main = do
      (arg1:args)<-getArgs
      hIn <- openFile arg1 ReadMode
      c <-BL.hGetContents hIn               --Really Fast
      let dna =  c
      r<-return (process dna)
      print (show (r))



    main = do
      (arg1:args)<-getArgs
      hIn <- openFile arg1 ReadMode
      c <-hGetContents hIn
      let dna =  fromList c                     --Kind of slow
      r<-return (process dna)
      print (show (r))


I think the "fromList" overhead will be compensated by the O(log(n)) functions on a Seq, against the O(n) counterparts on the strings.


What are your considerations about using Data.Sequence?