Re: Memory allokering i Python.

From: Anders S. Jensen (none@doozer--freakout.dk.lh.bsd-dk.dk)
Date: Fri 24 Oct 2003 - 22:20:04 CEST


Date: Fri, 24 Oct 2003 22:20:04 +0200
From: "Anders S. Jensen" <none@doozer--freakout.dk.lh.bsd-dk.dk>
To: bsd-dk@bsd-dk.dk
Subject: Re: Memory allokering i Python.

On Fri, Oct 24, 2003 at 09:20:04PM +0200, Jesper Louis Andersen wisely wrote:
> En mulighed er at opfatte det som hamrende smart. En anden mulighed er
> at opfatte det som unoedigt komplekst.

Jeg arbejder med HP-UX til dagligt, og jeg vil være tilbøjelig til at
indrømme at jeg nok ikke står forrest i køen for folk som siger at
det er smart...
Men lige præcis i dette tilfælde brugte FreeBSD omkring 56 system
sekunder, og HP-UX omkring 0.1!

> Det giver stof til eftertanke. Det sprog som jeg roder med til dagligt
> har en GC og jeg vil da lige checke hvordan den klarer sig. Specielt
> har vi det ''problem'' at linuximplementationen klarer sig godt fordi
> linux har mmremap(). Jeg tror dog jeg kan give noget mere hastighed
> til *BSD med lidt tanke.

Mit første ruby program i verden:

class Dostuff
    bigmother = ""

    def addrow(row)
        firstrun = 0

        for i in row
            if firstrun == 0
                bigmother = "#{i}"
                firstrun = 1
            else
                bigmother += ",#{i}"
            end
        end
        bigmother += "\n"
    end
end

mystuff = Dostuff.new
myrow = [ "/usr/local/some/bleeding/file", 12345, 42, 999 ]

for i in 1..10000
    mystuff.addrow(myrow)
end

-viser med al tydelighed at GC'en her er Pythons overlegen, da
truss afslører imponerende 76 kald til break()!

(Den kvikke læser lagde naturligvis straks mærke til at min
"firstrun = 1" sad i det forkerte scope i Python eksemplet?)

Jeg er fuldstændig enig i at problemet let løses ved at
tilføre lidt omtanke til kodningsprocessen (eller ved at
bruge Ruby ;).

-- 
Mvh,

Anders S. Jensen



This archive was generated by hypermail 2b30 : Wed 15 Nov 2006 - 18:24:32 CET