Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #91504

Re: High level C

From Les Cargill <lcargill99@comcast.com>
Newsgroups comp.lang.c
Subject Re: High level C
Date 2016-08-01 12:58 -0500
Organization A noiseless patient Spider
Message-ID <nno29s$csj$1@dont-email.me> (permalink)
References (9 earlier) <kfna8gxmve1.fsf@x-alumni2.alumni.caltech.edu> <nnlsql$7td$1@dont-email.me> <kfnfuqpl53h.fsf@x-alumni2.alumni.caltech.edu> <nnmntn$4ps$1@dont-email.me> <kfnlh0gjzll.fsf@x-alumni2.alumni.caltech.edu>

Show all headers | View raw


Tim Rentsch wrote:
> Les Cargill <lcargill99@comcast.com> writes:
>
>> Tim Rentsch wrote:
>>> Les Cargill <lcargill99@comcast.com> writes:
>>>
>>>> Tim Rentsch wrote:
>>>>> Melzzzzz <mel@zzzzz.com> writes:
>>>>>
>>>>>> On Sun, 31 Jul 2016 07:16:58 -0700
>>>>>> Tim Rentsch <txr@alumni.caltech.edu> wrote:
>>>>>>
>>>>>>> There is a common belief in some circles that GC incurs a
>>>>>>> substantial performance penalty relative to manual coding of
>>>>>>> free(), etc.  Experience with actual systems does not bear this
>>>>>>> out.  Indeed, the experience in some large code bases has been
>>>>>>> that switching to GC actually improves performance.
>>>>>>
>>>>>> Care to show links?
>>>>>
>>>>> Unfortunately I don't know any.  The only specific examples I
>>>>> know of are proprietary.  I am not aware of any where the
>>>>> results are publically available.
>>>>>
>>>>>> I find hardly to believe that deallocation increase
>>>>>> performance...
>>>>>> Stopping program to perform memory scan and trashing memory in process
>>>>>> is faster?  how so?
>>>>>
>>>>> I think it's pretty easy to understand.  If you do manual
>>>>> deallocation, bookkeeping needs to be done to keep track of what
>>>>> is referenced to know when something can be deallocated.
>>>>
>>>> No, you simply have to have an explicit context for the lifetime of
>>>> objects.  I personally have never witnessed where this was all that
>>>> onerous.  Most things we do can be chunked into "frames" like that.
>>>
>>> Certainly that can be done in some cases.  I believe there
>>> are also cases where it cannot be done, or at least cannot
>>> be done without a fair amount of difficulty.  I didn't
>>> mean to say that getting a performance improvement is
>>> typical, only that it does sometimes occur in real cases.
>>
>> I'm  not sure what you're after here.  Most 'C' programs I've used
>> may use dynamic ( or, more probably semi-dynamic) allocation behind
>> the scenes but applications I've dealt with largely tended to
>> accumulate a set of buffers and working storage, and after a short
>> while, became memory-stable.
>>
>> For the curious, this does indeed include things that have significant
>> levels of dynamically configured objects that get created and
>> destroyed.  You can often see the same sort of approach taken in the
>> Linux kernel - configuration options for the maximum number of object
>> <x> are part of the kernel build.  This creates arrays that are then
>> dynamically used.
>>
>> This is just a very 'C' thing to do.
>
> Obviously the behavior depends a lot on the application.  At one
> end of the spectrum, a program to do base64 encoding/decoding is
> likely to need essentially zero allocated memory.  Closer to the
> other end of the spectrum, a web browser is going to need new
> memory every time a new web page is opened (and ideally discard
> it when the page is closed).


So the total number of web browsers in the world probably fits in one
digit. This is hardly an argument for a language system providing all
the support for that level of dynamic-ness.

> As a rule in my own browser usage,
> I always open news tabs, and hardly ever close them.  (Of course
> I do close most of them eventually, but not right away.)

I close them as soon as I'm done. I have little doubt that they leak
memory, at least in terms of how the instrumentation for "memory used"
is concerned. I can close the whole thing ( after individually closing
tabs) and memory used drops. But there's a hunk of the executable that
stays resident after.

> Somewhere in between the end points we might put a compiler.
> It starts off using a small amount of memory, and allocates as
> it reads more source.  Then there is more allocation during
> semantic analysis to do type checking, optimization, checks
> for warning conditions, etc.  Of course a compiler might adopt
> a strategy of simply never deallocating, which is probably
> workable in some cases.  But that's just a poor man's GC -
> if a program is going to call malloc() and never call free(),
> assuming it doesn't hide pointers in some sneaky way then
> it might as well take advantage of drop-in conservative
> collector, which could allow it to compile larger programs
> than it could otherwise.
>

"A compiler" is generally multiple executables. Each has a pretty
proscribed, even pipe-ey task to perform. They're kinda "stream in, 
stream out" sorts of programs.

> Long story short:  yes, it depends on the application.  But
> in general the larger the application the more likely it is
> to be doing a lot of allocation and deallocation, and the
> more likely it is that deallocation doesn't follow an easily
> predictable pattern.

So color me less than sympathetic. It all just sounds like people
throwing up their hands to me.

If I have a point, it is that developing a culture of rational
ignorance about object lifetimes seems risky to me. I *perceive* this
as an artifact of people being...traumatized by memory leaks in their
CS 101 phase and becoming somewhat over-sensitive to it. Or something.

In the larger scheme of things, it's a sufficiently proscribed
problem that we believe it can be automated, so it should not be too
much afraid of doing in in other ways, if that makes any sense in the
first place.

And to be even more specific, I own things that obviously run Java and
they tend to be less reliable than the things that run 'C'. I have a
BluRay player and you have to unplug it from the wall now and again and
let all the "memory to go a ground state" type thing.

> If we weight our samples by how many
> lines of code are involved, I think most of the code will
> allocating and deallocating a fair amount.  Do you agree
> with that, or disagree?
>

I have to admit that I only know on a shallow level.


> Your example of the Linux kernel is a good one.  However,
> I think it is not typical of most large C programs.
>

Yeah, it could easily be a bias - most things I do are closer to
your base64 converter. They may be in user space, but they tend to be
very "driver-ey".

-- 
Les Cargill

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

High level C jacobnavia <jacob@jacob.remcomp.fr> - 2016-07-15 23:36 +0200
  Re: High level C supercat@casperkitty.com - 2016-07-15 15:17 -0700
    Re: High level C jacobnavia <jacob@jacob.remcomp.fr> - 2016-07-16 09:09 +0200
      Re: High level C supercat@casperkitty.com - 2016-07-17 20:02 -0700
  Re: High level C Keith Thompson <kst-u@mib.org> - 2016-07-15 15:17 -0700
    Re: High level C fir <profesor.fir@gmail.com> - 2016-07-31 23:55 -0700
  Re: High level C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-07-15 23:27 +0100
    Re: High level C jacobnavia <jacob@jacob.remcomp.fr> - 2016-07-16 09:13 +0200
      Re: High level C Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-07-16 02:07 -0700
        Re: High level C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-07-16 11:07 +0100
          Re: High level C Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-07-16 03:29 -0700
            Re: High level C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-07-16 13:40 +0100
            Re: High level C Udyant Wig <udyant.wig@gmail.com> - 2016-07-17 11:57 +0530
          Re: High level C BartC <bc@freeuk.com> - 2016-07-16 11:30 +0100
            Re: High level C Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-07-16 03:43 -0700
              Re: High level C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-07-16 13:53 +0100
                Re: High level C Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-07-16 07:49 -0700
                Re: High level C Jean-Marc Bourguet <jm@bourguet.org> - 2016-07-16 17:08 +0200
                Re: High level C Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-07-16 09:09 -0700
                Re: High level C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-07-16 16:26 +0100
                Re: High level C jacobnavia <jacob@jacob.remcomp.fr> - 2016-07-16 18:05 +0200
                Re: High level C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-07-16 20:15 +0100
                Re: High level C jacobnavia <jacob@jacob.remcomp.fr> - 2016-07-16 23:44 +0200
                Re: High level C raltbos@xs4all.nl (Richard Bos) - 2016-07-23 19:39 +0000
                Re: High level C jacobnavia <jacob@jacob.remcomp.fr> - 2016-07-23 22:58 +0200
                Re: High level C raltbos@xs4all.nl (Richard Bos) - 2016-07-27 14:52 +0000
                Re: High level C Richard Heathfield <rjh@cpax.org.uk> - 2016-07-27 16:29 +0100
                Re: High level C raltbos@xs4all.nl (Richard Bos) - 2016-07-23 19:38 +0000
              Re: High level C BartC <bc@freeuk.com> - 2016-07-16 14:17 +0100
            Re: High level C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-07-16 13:46 +0100
            Re: High level C Udyant Wig <udyant.wig@gmail.com> - 2016-07-17 12:05 +0530
              Re: High level C BartC <bc@freeuk.com> - 2016-07-17 11:03 +0100
                Re: High level C Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-07-17 03:39 -0700
                Re: High level C Udyant Wig <udyant.wig@gmail.com> - 2016-07-17 18:20 +0530
                Re: High level C BartC <bc@freeuk.com> - 2016-07-17 14:00 +0100
                Re: High level C Udyant Wig <udyant.wig@gmail.com> - 2016-07-17 23:13 +0530
                Re: High level C jacobnavia <jacob@jacob.remcomp.fr> - 2016-07-17 20:14 +0200
                Re: High level C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-07-17 20:14 +0100
                Re: High level C BartC <bc@freeuk.com> - 2016-07-17 20:45 +0100
                Re: High level C Gareth Owen <gwowen@gmail.com> - 2016-07-17 21:00 +0100
                Re: High level C Udyant Wig <udyant.wig@gmail.com> - 2016-07-18 09:48 +0530
                Re: High level C Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-07-18 00:55 -0700
                Re: High level C Udyant Wig <udyant.wig@gmail.com> - 2016-07-18 22:25 +0530
                Re: High level C BartC <bc@freeuk.com> - 2016-07-18 11:40 +0100
                Re: High level C Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-07-18 05:05 -0700
                Re: High level C Udyant Wig <udyant.wig@gmail.com> - 2016-07-18 22:59 +0530
                Re: High level C Udyant Wig <udyant.wig@gmail.com> - 2016-07-18 22:50 +0530
                Re: High level C BartC <bc@freeuk.com> - 2016-07-18 19:07 +0100
                Re: High level C Udyant Wig <udyant.wig@gmail.com> - 2016-07-19 11:53 +0530
                Re: High level C BartC <bc@freeuk.com> - 2016-07-19 11:15 +0100
                Re: High level C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-07-19 14:00 +0100
                Re: High level C BartC <bc@freeuk.com> - 2016-07-19 15:01 +0100
                Re: High level C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-07-19 15:26 +0100
                Re: High level C BartC <bc@freeuk.com> - 2016-07-19 15:57 +0100
                Re: High level C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-07-19 17:13 +0100
                Re: High level C BartC <bc@freeuk.com> - 2016-07-19 18:14 +0100
                Re: High level C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-07-19 19:20 +0100
                Re: High level C BartC <bc@freeuk.com> - 2016-07-19 19:46 +0100
                Re: High level C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-07-20 02:44 +0100
                Re: High level C BartC <bc@freeuk.com> - 2016-07-20 10:59 +0100
                Re: High level C Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-07-20 03:07 -0700
                Re: High level C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-07-21 01:44 +0100
                Re: High level C Udyant Wig <udyant.wig@gmail.com> - 2016-07-21 18:58 +0530
                Re: High level C BartC <bc@freeuk.com> - 2016-07-21 17:20 +0100
                Re: High level C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-07-21 20:52 +0100
                Re: High level C BartC <bc@freeuk.com> - 2016-07-21 21:14 +0100
                Re: High level C Keith Thompson <kst-u@mib.org> - 2016-07-21 13:23 -0700
                Re: High level C BartC <bc@freeuk.com> - 2016-07-21 21:50 +0100
                Re: High level C jacobnavia <jacob@jacob.remcomp.fr> - 2016-07-22 12:52 +0200
                Re: High level C Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-07-22 04:03 -0700
                Re: High level C Udyant Wig <udyant.wig@gmail.com> - 2016-07-22 23:56 +0530
                Re: High level C BartC <bc@freeuk.com> - 2016-07-22 20:09 +0100
                Re: High level C Udyant Wig <udyant.wig@gmail.com> - 2016-07-22 23:49 +0530
                Re: High level C BartC <bc@freeuk.com> - 2016-07-22 20:37 +0100
                Re: High level C jacobnavia <jacob@jacob.remcomp.fr> - 2016-07-19 19:16 +0200
                Re: High level C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-07-19 19:17 +0100
                Re: High level C jacobnavia <jacob@jacob.remcomp.fr> - 2016-07-19 21:07 +0200
                Re: High level C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-07-20 02:36 +0100
                Re: High level C Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-07-19 07:27 -0700
                Re: High level C BartC <bc@freeuk.com> - 2016-07-19 16:27 +0100
                Re: High level C Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-07-19 08:43 -0700
                Re: High level C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-07-19 19:14 +0100
                Re: High level C Jean-Marc Bourguet <jm@bourguet.org> - 2016-07-18 10:08 +0200
                Re: High level C Udyant Wig <udyant.wig@gmail.com> - 2016-07-18 23:04 +0530
      Re: High level C Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-07-16 10:18 +0100
    Re: High level C raltbos@xs4all.nl (Richard Bos) - 2016-07-23 19:26 +0000
      Re: High level C Tim Rentsch <txr@alumni.caltech.edu> - 2016-07-25 09:21 -0700
        Re: High level C luser droog <luser.droog@gmail.com> - 2016-07-25 10:19 -0700
          Re: High level C Tim Rentsch <txr@alumni.caltech.edu> - 2016-07-28 10:31 -0700
            Re: High level C luser droog <luser.droog@gmail.com> - 2016-07-28 21:13 -0700
              Re: High level C supercat@casperkitty.com - 2016-07-29 09:05 -0700
                Re: High level C Keith Thompson <kst-u@mib.org> - 2016-07-29 09:30 -0700
                Re: High level C supercat@casperkitty.com - 2016-07-29 10:08 -0700
                Re: High level C Ike Naar <ike@iceland.freeshell.org> - 2016-07-29 17:57 +0000
                Re: High level C supercat@casperkitty.com - 2016-07-29 11:50 -0700
              Re: High level C Tim Rentsch <txr@alumni.caltech.edu> - 2016-07-31 07:16 -0700
                Re: High level C raltbos@xs4all.nl (Richard Bos) - 2016-07-31 14:34 +0000
                Re: High level C Tim Rentsch <txr@alumni.caltech.edu> - 2016-07-31 14:55 -0700
                Re: High level C Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-08-01 03:10 -0700
                Re: High level C Tim Rentsch <txr@alumni.caltech.edu> - 2016-08-01 07:40 -0700
                Re: High level C Gareth Owen <gwowen@gmail.com> - 2016-08-01 19:43 +0100
                Re: High level C Les Cargill <lcargill99@comcast.com> - 2016-08-01 10:21 -0500
                Re: High level C raltbos@xs4all.nl (Richard Bos) - 2016-08-03 13:14 +0000
                Re: High level C Tim Rentsch <txr@alumni.caltech.edu> - 2016-08-05 08:40 -0700
                Re: High level C Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-08-05 09:28 -0700
                Re: High level C fir <profesor.fir@gmail.com> - 2016-08-05 09:55 -0700
                Re: High level C Tim Rentsch <txr@alumni.caltech.edu> - 2016-08-05 15:51 -0700
                Re: High level C Melzzzzz <mel@zzzzz.com> - 2016-08-05 18:43 +0200
                Re: High level C Tim Rentsch <txr@alumni.caltech.edu> - 2016-08-05 15:43 -0700
                Re: High level C Melzzzzz <mel@zzzzz.com> - 2016-08-06 00:52 +0200
                Re: High level C raltbos@xs4all.nl (Richard Bos) - 2016-08-10 12:42 +0000
                Re: High level C Tim Rentsch <txr@alumni.caltech.edu> - 2016-08-11 12:24 -0700
                Re: High level C Melzzzzz <mel@zzzzz.com> - 2016-07-31 16:42 +0200
                Re: High level C Tim Rentsch <txr@alumni.caltech.edu> - 2016-07-31 12:59 -0700
                Re: High level C Les Cargill <lcargill99@comcast.com> - 2016-07-31 17:12 -0500
                Re: High level C Tim Rentsch <txr@alumni.caltech.edu> - 2016-07-31 17:12 -0700
                Re: High level C Les Cargill <lcargill99@comcast.com> - 2016-08-01 00:54 -0500
                Re: High level C Tim Rentsch <txr@alumni.caltech.edu> - 2016-08-01 08:08 -0700
                Re: High level C Les Cargill <lcargill99@comcast.com> - 2016-08-01 12:58 -0500
                Re: High level C Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-08-01 12:25 -0700
                Re: High level C Tim Rentsch <txr@alumni.caltech.edu> - 2016-08-03 08:44 -0700
                Re: High level C Les Cargill <lcargill99@comcast.com> - 2016-08-03 11:56 -0500
                Re: High level C jacobnavia <jacob@jacob.remcomp.fr> - 2016-08-03 19:29 +0200
                Re: High level C "James R. Kuyper" <jameskuyper@verizon.net> - 2016-08-03 13:45 -0400
                Re: High level C Les Cargill <lcargill99@comcast.com> - 2016-08-03 13:23 -0500
                Re: High level C BartC <bc@freeuk.com> - 2016-08-03 19:27 +0100
                Re: High level C jacobnavia <jacob@jacob.remcomp.fr> - 2016-08-03 21:04 +0200
                Re: High level C Gareth Owen <gwowen@gmail.com> - 2016-08-03 20:08 +0100
                Re: High level C Les Cargill <lcargill99@comcast.com> - 2016-08-03 16:09 -0500
                Re: High level C Les Cargill <lcargill99@comcast.com> - 2016-08-03 16:06 -0500
                Re: High level C jacobnavia <jacob@jacob.remcomp.fr> - 2016-08-03 23:36 +0200
                Re: High level C Les Cargill <lcargill99@comcast.com> - 2016-08-03 19:44 -0500
                Re: High level C supercat@casperkitty.com - 2016-08-03 15:03 -0700
                Re: High level C Tim Rentsch <txr@alumni.caltech.edu> - 2016-08-04 19:17 -0700
                Re: High level C Melzzzzz <mel@zzzzz.com> - 2016-08-05 05:48 +0200
                Re: High level C Keith Thompson <kst-u@mib.org> - 2016-08-05 08:24 -0700
                Re: High level C Melzzzzz <mel@zzzzz.com> - 2016-08-05 18:30 +0200
                Re: High level C Keith Thompson <kst-u@mib.org> - 2016-08-05 10:34 -0700
                Re: High level C Melzzzzz <mel@zzzzz.com> - 2016-08-05 20:50 +0200
                Re: High level C Tim Rentsch <txr@alumni.caltech.edu> - 2016-08-05 15:39 -0700
                Re: High level C Melzzzzz <mel@zzzzz.com> - 2016-08-06 00:50 +0200
                Re: High level C Keith Thompson <kst-u@mib.org> - 2016-08-05 17:08 -0700
                Re: High level C Melzzzzz <mel@zzzzz.com> - 2016-08-06 02:23 +0200
                Re: High level C raltbos@xs4all.nl (Richard Bos) - 2016-08-06 10:03 +0000
                Re: High level C Melzzzzz <mel@zzzzz.com> - 2016-08-06 12:13 +0200
                Re: High level C "James R. Kuyper" <jameskuyper@verizon.net> - 2016-08-06 11:10 -0400
                Re: High level C Melzzzzz <mel@zzzzz.com> - 2016-08-06 17:40 +0200
                Re: High level C "James R. Kuyper" <jameskuyper@verizon.net> - 2016-08-06 11:56 -0400
                Re: High level C Melzzzzz <mel@zzzzz.com> - 2016-08-06 17:51 +0200
                Re: High level C supercat@casperkitty.com - 2016-08-08 09:12 -0700
                Re: High level C jacobnavia <jacob@jacob.remcomp.fr> - 2016-07-31 22:07 +0200
                Re: High level C Tim Rentsch <txr@alumni.caltech.edu> - 2016-07-31 15:05 -0700
                Re: High level C Ian Collins <ian-news@hotmail.com> - 2016-08-03 11:22 +1200
                Re: High level C Tim Rentsch <txr@alumni.caltech.edu> - 2016-08-03 08:50 -0700
  Re: High level C BartC <bc@freeuk.com> - 2016-07-16 01:12 +0100
    Re: High level C Jerry Stuckle <jstucklex@attglobal.net> - 2016-07-15 20:16 -0400
    Re: High level C jacobnavia <jacob@jacob.remcomp.fr> - 2016-07-16 09:17 +0200
  Re: High level C Siri Cruise <chine.bleu@yahoo.com> - 2016-07-16 08:20 -0700
    Re: High level C jacobnavia <jacob@jacob.remcomp.fr> - 2016-07-16 17:24 +0200
      Re: High level C Siri Cruise <chine.bleu@yahoo.com> - 2016-07-16 09:24 -0700
  Re: High level C carlglassberg@gmail.com - 2016-07-17 14:15 -0700
  Re: High level C carlglassberg@gmail.com - 2016-07-17 14:22 -0700
    Re: High level C jacobnavia <jacob@jacob.remcomp.fr> - 2016-07-17 23:58 +0200
  Re: High level C fir <profesor.fir@gmail.com> - 2016-08-02 13:20 -0700

csiph-web