🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.funkcyjne
Article #29

Re: Przepełnienie stosu w Ocamlu.

#29
From: Tomasz Zielonka
Date: Tue, 03 Dec 2002 11:42
55 lines
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-mail
References: <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