Article View: pl.comp.lang.funkcyjne
Article #29Re: Przepełnienie stosu w Ocamlu.
From: Tomasz Zielonka
Date: Tue, 03 Dec 2002 11:42
Date: Tue, 03 Dec 2002 11:42
55 lines
2847 bytes
2847 bytes
Arek Paterek napisał:
> W Ocamlu jest to problem (i w innych językach funkcyjnych pewnie też),
W Haskellu, GHC 5.04.1:
y.hs:
module Main where
import System
f :: Int -> Int
f n =
if n == 1 then
1
else
1 + f (n-1)
main :: IO ()
main =
do
args <- getArgs
mapM_ (print.f.read) args
$ ghc -O --make y -o y
$ strace -o s ./y 100000000 +RTS -K1G # 1G stosu !
100000000
$ grep mmap s
old_mmap(0x50000000, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x50000000
old_mmap(0x50100000, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x50100000
old_mmap(0x50200000, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x50200000
old_mmap(0x50300000, 2097152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x50300000
old_mmap(0x50500000, 4194304, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x50500000
old_mmap(0x50900000, 8388608, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x50900000
old_mmap(0x51100000, 16777216, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x51100000
old_mmap(0x52100000, 33554432, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x52100000
old_mmap(0x54100000, 67108864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x54100000
old_mmap(0x58100000, 134217728, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x58100000
old_mmap(0x60100000, 267386880, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x60100000
old_mmap(0x70000000, 533725184, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x70000000
Jak uruchomie tak:
$ ./y 1 +RTS -K1G
nie alokuje od razu jednogigowego stosu.
Niech no jeszcze ktoś powie, że Haskell jest mniej praktyczny niż OCaml ;)
PS. Jeśli OCaml też potrafi inkrementalnie alokować stos, chętnie się o
tym dowiem.
pozdrawiam,
tomek
--
.signature: Too many levels of symbolic links
Technical Details
Message-ID:
<slrnaup65i.v97.t.zielonka@zodiac.mimuw.edu.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!mimuw.edu.pl!news.mimuw.edu.pl!not-for-mailReferences:
<asg3hf$25q$1@kenny.mimuw.edu.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!mimuw.edu.pl!news.mimuw.edu.pl!not-for-mail From: Tomasz Zielonka <t.zielonka@students.mimuw.edu.pl> Newsgroups: pl.comp.lang.funkcyjne Subject: Re: Przepełnienie stosu w Ocamlu. Date: Tue, 3 Dec 2002 11:42:44 +0000 (UTC) Organization: MIMUW Lines: 55 Message-ID: <slrnaup65i.v97.t.zielonka@zodiac.mimuw.edu.pl> References: <asg3hf$25q$1@kenny.mimuw.edu.pl> Reply-To: t.zielonka@students.mimuw.edu.pl NNTP-Posting-Host: zodiac.mimuw.edu.pl Mime-Version: 1.0 X-Trace: kenny.mimuw.edu.pl 1038915764 22642 10.1.1.1 (3 Dec 2002 11:42:44 GMT) X-Complaints-To: abuse@news.mimuw.edu.pl NNTP-Posting-Date: Tue, 3 Dec 2002 11:42:44 +0000 (UTC) User-Agent: slrn/0.9.7.3 (Linux) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit