comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: C++0x and Threads - a poor relation to Ada's tasking model?
Date: Wed, 12 Aug 2009 20:28:27 -0500
Date: 2009-08-12T20:28:27-05:00	[thread overview]
Message-ID: <h5vq9u$i0g$1@munin.nbi.dk> (raw)
In-Reply-To: 6d23274b-d649-4a83-a6f1-6d1e9c4c3998@d34g2000vbm.googlegroups.com

"REH" <spamjunk@stny.rr.com> wrote in message 
news:6d23274b-d649-4a83-a6f1-6d1e9c4c3998@d34g2000vbm.googlegroups.com...
On Aug 12, 4:41 pm, Robert A Duff <bobd...@shell01.TheWorld.com>
wrote:
...
>> C++ and Ada both share this philosophy. It's called
>> "avoid distributed overhead".
>
>The reason I said "potentially" is you may or maybe pay the cost in
>Ada, depending on the implementation. There are implementations where
>you will always pay a speed penalty for exceptions (e.g., in setting
>up the frame), and there are ones where you only pay if an exception
>is raised (e.g., a table-based implementation).  A C++ compiler will
>not make me "pay" the cost of exceptions if I never make use of them.
>What I mean by that is, if I don't have a try block, there will never
>be any setup code to catch or propagate exceptions. In Ada, you may or
>may not.

It seems to me that you are says Ada and C++ are exactly the same here. The 
cost for exception handling in Ada only exists if you have an exception 
handler. I've never seen an Ada implementation that has any overhead for a 
frame that doesn't contain a handler - it would be a horrible performance 
drag. That's essentially equivalent to the C++ situation, as a "try block" 
is roughly equivalent to an Ada block with an exception handler. (Ada just 
allows handlers in more places.)

>Similarly with range-checking. If I index an array in Ada, it may or
>may not range check the index (a smart compiler can remove the check
>if it can prove it cannot be out-of-range). C++ will not range check
>the index. I have to do it explicitly (which is why I used that word),
>or if I am using vectors, call the at member explicitly.

Range checking is very cheap (generally only a couple of instructions); you 
can only detect the overhead in benchmarks. The odds that it would matter to 
a program is minimal (and the program is a lot safer for its enclusion). 
Overhead from exceptions and potentially finalizations are several orders of 
magnitude larger, and matter a lot more.

Premature optimization (which includes worrying about overhead without 
determining that it is significant) is the root of much evil.

                                                       Randy.

REH 





  reply	other threads:[~2009-08-13  1:28 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-11 15:30 C++0x and Threads - a poor relation to Ada's tasking model? John McCabe
2009-08-11 20:51 ` Maciej Sobczak
2009-08-12 12:25   ` John McCabe
2009-08-12 14:51     ` Maciej Sobczak
2009-08-12 15:56     ` REH
2009-08-12 16:59       ` John McCabe
2009-08-12 17:21         ` REH
2009-08-12 20:41           ` Robert A Duff
2009-08-12 21:15             ` REH
2009-08-13  1:28               ` Randy Brukardt [this message]
2009-08-13  2:08                 ` REH
2009-08-13  8:38                   ` Pascal Obry
2009-08-13  8:57                     ` Dmitry A. Kazakov
2009-08-13 11:32                       ` Pascal Obry
2009-08-13 12:28                         ` Dmitry A. Kazakov
2009-08-14  1:15                           ` Brian Drummond
2009-08-14 11:24                           ` Language checks (Was: C++0x and Threads - a poor relation to Ada's tasking model?) Jacob Sparre Andersen
2009-08-14 12:01                             ` Dmitry A. Kazakov
2009-08-14 13:33                               ` REH
2009-08-14 13:48                                 ` John McCabe
2009-08-14 14:51                                   ` John McCabe
2009-08-14 14:13                                 ` Dmitry A. Kazakov
2009-08-14 19:58                                   ` Language checks Robert A Duff
2009-08-15  0:10                             ` Language checks (Was: C++0x and Threads - a poor relation to Ada's tasking model?) Randy Brukardt
2009-08-14 13:10               ` C++0x and Threads - a poor relation to Ada's tasking model? Gautier write-only
2009-08-14 13:16                 ` REH
2009-08-12 21:24             ` REH
2009-08-13 13:51               ` John McCabe
2009-08-13 16:24                 ` REH
2009-08-14 11:09                   ` John McCabe
2009-08-14 13:00                     ` REH
2009-08-14 14:30                       ` John McCabe
2009-08-14 14:49                         ` REH
2009-08-14 14:54                           ` John McCabe
2009-08-14 15:35                             ` REH
2009-08-14 18:43                               ` Robert A Duff
2009-08-14 18:54                                 ` REH
2009-08-14 22:33                                   ` Robert A Duff
2009-08-15  1:15                                     ` REH
2009-08-15 14:24                                       ` Robert A Duff
2009-08-14 15:09                           ` Hyman Rosen
2009-08-14 15:12                             ` REH
2009-08-13 13:55           ` John McCabe
2009-08-13 16:45             ` REH
2009-08-14 11:14               ` John McCabe
2009-08-12 20:53         ` Maciej Sobczak
2009-08-11 23:53 ` jimmaureenrogers
2009-08-12  0:06   ` Jeffrey R. Carter
2009-08-12  7:26   ` Maciej Sobczak
2009-08-12  5:29     ` stefan-lucks
2009-08-12 15:00       ` Maciej Sobczak
2009-08-12  9:27     ` Ludovic Brenta
2009-08-12 15:14       ` Maciej Sobczak
2009-08-13 12:47         ` Peter C. Chapin
2009-08-13 13:57           ` John McCabe
2009-08-14  7:39           ` Maciej Sobczak
2009-08-14 11:13             ` John McCabe
2009-08-14 12:23               ` Dmitry A. Kazakov
2009-08-14 12:50                 ` John McCabe
2009-08-14 13:50                   ` Dmitry A. Kazakov
2009-08-14 13:58                     ` Niklas Holsti
2009-08-14 14:17                       ` Dmitry A. Kazakov
2009-08-14 22:25                       ` Brian Drummond
2009-08-14 12:56             ` John McCabe
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox