comp.lang.ada
 help / color / mirror / Atom feed
From: Bill Findlay <yaldnifw@blueyonder.co.uk>
Subject: Re: Efficient Matrix?
Date: Sat, 28 Dec 2002 15:21:52 +0000
Date: 2002-12-28T15:21:52+00:00	[thread overview]
Message-ID: <BA337210.16F9%yaldnifw@blueyonder.co.uk> (raw)
In-Reply-To: slrnb0r842.2n7.adi@drcomp.erfurt.thur.de

On 28/12/02 13:00, in article slrnb0r842.2n7.adi@drcomp.erfurt.thur.de,
"Adrian Knoth" <adi@drcomp.erfurt.thur.de> wrote:

> Robert A Duff <bobduff@shell01.TheWorld.com> wrote:
> 
>> Compilers are required to pack tightly in this case (one bit per Boolean
>> component).  I.e., Matrix'Component_Size will be 1 if there's a pragma
>> Pack.  See RM-13.2(9).
> 
[snip]
> 
>> It's got nothing to do with the fact that the thing is heap allocated,
>> nor the fact that the bounds are not known at compile time.
> 
> For the variable A it is even known, but I was not able to determine
> a valuable difference in memory-comsumption.
> 

I get good results as follows, with GNAT 5.00w for MacOS X.
-----------------------------------------------------------
with Ada.Text_IO; use Ada.Text_IO;

procedure bla is

   type unconstrained_type is
        array (Positive range <>, Positive range <>) of Boolean;
   for unconstrained_type'Component_Size use 1;
   pragma Pack (unconstrained_type);

   subtype constrained_type is unconstrained_type (1 .. 10000, 1 .. 5000);
   type constrained_type_ptr is access constrained_type;

   A : constrained_type_ptr := new constrained_type;

begin
   Put_Line (Integer'Image (constrained_type'Component_Size));
   Put_Line (Integer'Image (unconstrained_type'Component_Size));
   Put_Line (Integer'Image (constrained_type'Size));
   Put_Line (Integer'Image (A.all'Size));
end bla;
----------------------------------------------------------------
% ./bla
 1
 8
 50000000
 50000000
----------------------------------------------------------------
-- 
Bill-Findlay chez blue-yonder.co.uk ("-" => "")




  reply	other threads:[~2002-12-28 15:21 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <3e0b2a66_4@news.bluewin.ch>
2002-12-26 22:09 ` Efficient Matrix? Adrian Knoth
2002-12-27  0:23   ` Alvery Grazebrook
2002-12-27  9:53     ` Adrian Knoth
2002-12-27 16:58       ` Robert A Duff
2002-12-28  1:44         ` Nick Roberts
2002-12-28 13:00         ` Adrian Knoth
2002-12-28 15:21           ` Bill Findlay [this message]
2002-12-28 15:48             ` Adrian Knoth
2002-12-28 23:26               ` Adrian Knoth
2002-12-28 16:07             ` Robert A Duff
2002-12-28 17:25               ` Bill Findlay
2002-12-28 17:35                 ` Bill Findlay
2002-12-28 20:51                 ` Robert A Duff
2002-12-28 15:58           ` Robert A Duff
2002-12-28 17:19             ` Adrian Knoth
2002-12-28 19:16               ` James S. Rogers
2002-12-28 20:45               ` Robert A Duff
2002-12-28 22:07                 ` Adrian Knoth
2002-12-28 23:42                   ` Robert A Duff
2002-12-27 12:25 ` Gautier
replies disabled

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