[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