From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Languages don't matter. A mathematical refutation
Date: Tue, 7 Apr 2015 14:07:03 -0500
Date: 2015-04-07T14:07:03-05:00 [thread overview]
Message-ID: <mg19so$rqk$1@loke.gir.dk> (raw)
In-Reply-To: 87oan0aote.fsf@jester.gateway.sonic.net
"Paul Rubin" <no.email@nospam.invalid> wrote in message
news:87oan0aote.fsf@jester.gateway.sonic.net...
> "Randy Brukardt" <randy@rrsoftware.com> writes:
>> GC overhead (and the corresponding allocation overhead) would be a lot
>> more than the combination of free chaining and static allocation ...
>
> GC doesn't use that much of the runtime of typical programs
Given that there is no such thing as a "typical program" when it comes to
memory management, that's a meaningless statement. The memory management
patterns in a compiler, for instance, are wildly different than in a web
server. (Having written both, I have some practical experience there. :-)
The real-time systems that Ada customers build are very different from both.
> in GC'd languages, and the cpu overhead can be made quite small with
> generational gc's.
And this isn't remotely the major expense, so that's just a case of
optimizing the wrong thing.
> There is no allocation overhead (just bump a pointer)
And this is bogus. Either items are collected in place, which means that you
have to allocate from fragmented memory (a lot of more expensive than
"bumping a pointer" - that was the cause of the issues we had with our
compiler back in the day), or they're compacted somehow. And compaction is
very expensive, simply because copying things around for no reason is
expensive. (Ada 2012 has to add access-in-place operations to the Ada
Containers specifically to eliminate that overhead.)
> and no overhead of freeing garbage. There is some overhead
> from tracing and copying the recently created live data (minor
> collections, the amount of data touched is usually small) and occasional
> more expensive major collections (they also trace older data). This
> does have a cost in memory footprint but the cpu load isn't that big.
And this is what is complete fantasy. Being able to trace objects requires
keeping a lot of extra information at runtime. Keeping enough information to
allow runtime debugging slows down our code 5-10% (it makes calls to small
subprograms much more expensive). You'd need that and more to be able to do
any sort of trace. And I'm dubious about the supposed cost of those traces.
Our compiler uses a lot of pointers; most of them act as handles and aren't
actually dereferenced in the majority of the code, but they do get passed
around a lot. That means a lot of copies of pointers, so lots of data
structures to trace.
Randy.
next prev parent reply other threads:[~2015-04-07 19:07 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-25 11:46 Languages don't matter. A mathematical refutation Jean François Martinez
2015-03-25 15:19 ` Paul Rubin
2015-04-03 0:50 ` robin.vowels
2015-04-03 2:18 ` Jeffrey Carter
2015-04-03 13:37 ` Bob Duff
2015-04-03 14:13 ` Dmitry A. Kazakov
2015-04-03 17:34 ` Paul Rubin
2015-04-03 19:34 ` Dmitry A. Kazakov
2015-04-03 19:58 ` Paul Rubin
2015-04-04 6:59 ` Dmitry A. Kazakov
2015-04-06 21:12 ` Paul Rubin
2015-04-07 5:57 ` Dmitry A. Kazakov
2015-04-08 4:12 ` Paul Rubin
2015-04-08 6:45 ` Dmitry A. Kazakov
2015-04-04 0:41 ` Dennis Lee Bieber
2015-04-04 3:05 ` Paul Rubin
2015-04-04 14:46 ` Dennis Lee Bieber
2015-04-04 15:41 ` brbarkstrom
2015-04-04 19:20 ` Paul Rubin
2015-04-04 20:00 ` Dmitry A. Kazakov
2015-04-04 20:44 ` Paul Rubin
2015-04-05 8:00 ` Dmitry A. Kazakov
2015-04-05 9:55 ` Brian Drummond
2015-04-06 21:27 ` Randy Brukardt
2015-04-06 17:07 ` Paul Rubin
2015-04-06 17:41 ` Dmitry A. Kazakov
2015-04-06 18:35 ` Paul Rubin
2015-04-06 21:46 ` Randy Brukardt
2015-04-06 22:12 ` Paul Rubin
2015-04-06 23:40 ` Jeffrey Carter
2015-04-07 19:07 ` Randy Brukardt [this message]
2015-04-08 3:53 ` Paul Rubin
2015-04-08 21:16 ` Randy Brukardt
2015-04-09 1:36 ` Paul Rubin
2015-04-09 23:26 ` Randy Brukardt
2015-04-09 2:36 ` David Botton
2015-04-09 8:55 ` Georg Bauhaus
2015-04-09 9:38 ` Dmitry A. Kazakov
2015-04-09 13:14 ` G.B.
2015-04-09 14:35 ` Dmitry A. Kazakov
2015-04-09 15:43 ` G.B.
2015-04-09 17:26 ` Dmitry A. Kazakov
2015-04-09 18:40 ` Niklas Holsti
2015-04-09 19:02 ` Dmitry A. Kazakov
2015-04-09 20:38 ` Paul Rubin
2015-04-09 23:35 ` Randy Brukardt
2015-04-10 14:16 ` G.B.
2015-04-10 20:58 ` Randy Brukardt
2015-04-07 0:36 ` Dennis Lee Bieber
2015-04-05 13:57 ` Dennis Lee Bieber
2015-04-03 16:17 ` J-P. Rosen
2015-04-03 17:33 ` Bob Duff
2015-04-26 11:38 ` David Thompson
2015-04-03 19:00 ` Georg Bauhaus
2015-04-03 19:12 ` Jeffrey Carter
2015-04-03 22:37 ` Bob Duff
2015-04-03 23:38 ` Jeffrey Carter
2015-04-04 0:15 ` Bob Duff
2015-04-04 7:06 ` Dmitry A. Kazakov
2015-04-04 2:59 ` Paul Rubin
2015-04-04 0:56 ` Dennis Lee Bieber
2015-03-25 17:12 ` Jean François Martinez
2015-03-26 13:43 ` Maciej Sobczak
2015-03-26 15:01 ` Jean François Martinez
2015-03-26 17:45 ` Jeffrey Carter
2015-03-26 15:21 ` Dmitry A. Kazakov
2015-03-27 11:25 ` Jean François Martinez
2015-03-27 17:36 ` Dmitry A. Kazakov
2015-03-30 10:31 ` Jean François Martinez
2015-03-30 11:52 ` Dmitry A. Kazakov
2015-03-30 12:32 ` G.B.
2015-03-30 13:48 ` Dmitry A. Kazakov
2015-03-30 15:47 ` G.B.
2015-03-30 16:05 ` Dmitry A. Kazakov
2015-04-02 12:59 ` brbarkstrom
2015-04-02 13:35 ` Dmitry A. Kazakov
2015-04-02 14:48 ` jm.tarrasa
2015-04-02 15:55 ` brbarkstrom
2015-04-02 16:21 ` Jean François Martinez
2015-04-02 16:48 ` Dmitry A. Kazakov
2015-04-02 16:41 ` Dmitry A. Kazakov
2015-04-04 10:02 ` jm.tarrasa
2015-04-04 11:16 ` Dmitry A. Kazakov
2015-04-02 15:58 ` Jean François Martinez
2015-04-02 16:39 ` Dmitry A. Kazakov
2015-04-03 9:46 ` Jean François Martinez
2015-04-03 14:00 ` Dmitry A. Kazakov
2015-04-03 17:12 ` Jean François Martinez
2015-04-02 17:17 ` G.B.
2015-04-02 19:09 ` Dmitry A. Kazakov
2015-04-02 18:24 ` Niklas Holsti
2015-04-02 18:43 ` Jeffrey Carter
2015-03-30 11:36 ` Jean François Martinez
2015-03-30 10:48 ` jm.tarrasa
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox