comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Everything You Know Is Wrong
Date: Tue, 29 Dec 2015 15:58:24 -0600
Date: 2015-12-29T15:58:24-06:00	[thread overview]
Message-ID: <n5uvm1$6j1$1@loke.gir.dk> (raw)
In-Reply-To: n5ugbf$fqr$1@speranza.aioe.org

"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message 
news:n5ugbf$fqr$1@speranza.aioe.org...
> On 2015-12-29 17:57, G.B. wrote:
>
>> The point is that, since order does not matter among these parallel
>> computations, and since parallel loops are not just fantasy,
>> the possibility of postponement follows from parallel loops.
>
> Ada does not have parallel loops. The job is done!

But Ada 202x most likely will.

>> Consider F1 and F2 from a Pure package, X a variable of type T
>> and T without progenitors:
>>
>>     declare
>>        A : T := F1 (1,2,3);
>>        B : T := F2 (X);
>>     begin
>>        G (A, B);
>>     end;
>>
>> Is it impossible for a compiler to see that the initializing parts of
>> the declarations of A and B are independent?
>
> No, because initialization of T may have side effects. Ada mandates B 
> initialized after A. Again, the "optimization" you wanted is done.

Irrelevant - the compiler knows if any side-effects are possible (T is known 
to the compiler). That is going to be a conservative determination, but it 
will be true for many types (there is no side-effect for elementary types, 
for instance). Similarly, the compiler could know that other side-effects 
aren't possible, either by inspecting the code or by a declaration (many 
compilers have mechanisms for this, and Ada 202x is likely to get one as 
well).

In any case, optimization is a very important part of compilation. Pretty 
much all Ada compilers make decisions like the one shown here every time you 
compile anything - the results would be terrible if they did not. For 
Janus/Ada, it makes a difference of up to 25% in time and space (compared to 
the unoptimized code). And of course one can optimize for many different 
things, including power usage -- I'm pretty sure the compilers used for 
mobile platforms do such optimizations as a matter of course. And that's for 
C -- Ada provides many more optimization possibilities because it has far 
more information about the program and the programmers intentions.

                                          Randy.





> BTW, why do you believe that the same amount of computation performed 
> consecutively should require less energy or (not quite same) less battery 
> drain? It is no obvious. In any case it might depend on the specifics of 
> the battery, the board, the memory controller, the number of cores etc. 
> You cannot optimize for these, it would lead a combinatoric explosion of 
> targets. All that mess to save 0.1% drain?
>
> -- 
> Regards,
> Dmitry A. Kazakov
> http://www.dmitry-kazakov.de 


  parent reply	other threads:[~2015-12-29 21:58 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-27  0:37 Everything You Know Is Wrong Jeffrey R. Carter
2015-12-27  7:55 ` J-P. Rosen
2015-12-27 17:37   ` Jeffrey R. Carter
2015-12-27  8:46 ` Dmitry A. Kazakov
2015-12-27 17:36   ` Jeffrey R. Carter
2016-01-04 14:44     ` Alejandro R. Mosteo
2015-12-28  9:57 ` Georg Bauhaus
2015-12-28 11:19   ` Dmitry A. Kazakov
2015-12-28 16:27     ` Nicholas Collin Paul de Gloucester
2015-12-28 17:30       ` Dmitry A. Kazakov
2015-12-28 18:50         ` Nicholas Collin Paul de Gloucester
2015-12-28 20:40           ` Dmitry A. Kazakov
2015-12-29 11:42             ` G.B.
2015-12-29 12:36               ` Dmitry A. Kazakov
2015-12-29 13:50                 ` G.B.
2015-12-29 14:06                   ` J-P. Rosen
2015-12-29 14:16                   ` Dmitry A. Kazakov
2015-12-29 16:31                     ` Dennis Lee Bieber
2015-12-29 17:02                       ` G.B.
2015-12-29 16:57                     ` G.B.
2015-12-29 17:36                       ` Dmitry A. Kazakov
2015-12-29 17:53                         ` G.B.
2015-12-29 18:09                           ` G.B.
2015-12-29 22:05                           ` Randy Brukardt
2016-01-04 14:51                           ` Alejandro R. Mosteo
2015-12-29 21:58                         ` Randy Brukardt [this message]
2015-12-28 17:19 ` Nicholas Collin Paul de Gloucester
2015-12-29 23:37 ` darkestkhan
2016-01-05 13:52 ` brbarkstrom
2016-01-10 14:46 ` Michael Erdmann
2016-02-29 12:14 ` Jacob Sparre Andersen
2016-03-02 14:11   ` vincent.diemunsch
2016-03-02 14:23     ` J-P. Rosen
2016-03-02 15:44       ` Bob Brown
2016-03-02 16:30         ` J-P. Rosen
2016-03-02 16:36           ` Bob Brown
2016-03-02 16:52             ` Bob Brown
2016-03-02 14:32     ` Dmitry A. Kazakov
2016-03-02 15:31       ` vincent.diemunsch
2016-02-29 12:27 ` Jacob Sparre Andersen
replies disabled

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