[linux] Testovací dátový súbor

Peter Trsko dogmat na inmail.sk
Čtvrtek Červen 18 18:03:45 CEST 2009


Ahoj.

On 2009-06-15, johnny64 at swissjabber.org wrote:
> Haskell bol o niečo obtiažnejší, kým som sa nedozvedel o putStr
> a putStrLn. Najprv program interpretovaný ghc interpreterom:
> 
> johnny64 at zriebae:~$ time ghc -e \
> 'putStrLn (['\'x\'' | x <- [1..1000000]])' > /dev/null
> 
> real    0m4.688s
> user    0m4.392s
> sys     0m0.092s
> 
> Rozdiel oproti pythonu je iba čosi vyše sekundy, čiže nie veľký zisk.
> Po kompilácii však haskellovský program pobežal rádovo rýchlejšie:
> 
> johnny64 at zriebae:~$ echo \
> 'main = putStrLn (['\'x\'' | x <- [1..1000000]])' > ghcheh.hs && \
> ghc -O2 -o ghcheh ghcheh.hs && time ./ghcheh > /dev/null; rm ghcheh*
> 
> real    0m0.238s
> user    0m0.220s
> sys     0m0.008s

Ak clovek namiesto list comprehension pouzije funkciu replicate tak to
dostane na menej ako polovicu. Urychlit viac sa to da ked clovek pouzije
ByteString:

  [ dogmat at morphism tmp ]$ cat > x.hs
  import System.Environment ( getArgs ) 
  import qualified Data.ByteString.Char8 as BS
  
  main :: IO ()
  main = getArgs >>= BS.putStrLn . flip BS.replicate 'x' . read . head
  [ dogmat at morphism tmp ]$ ghc --make x.hs
  [1 of 1] Compiling Main             ( x.hs, x.o )
  Linking x ...
  [ dogmat at morphism tmp ]$ ./x 1000000 > /dev/null
  
  real	0m0.007s
  user	0m0.004s
  sys	0m0.000s


S pozdravom
-- 
(dogmaT                                          |       The ASCII ()
        (icq 303140614)                          | Ribbon Campaign /\
        (jabber dogmat_at_njs_dot_netlab_dot_cz) |
        (mail dogmat_at_dogmat_dot_us)           | Say NO to HTML and
        (web http://dogmat.us))                  | Word docs in email


Další informace o konferenci linux