DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: B T

⟦3e78db878⟧ TextFile

    Length: 3260 (0xcbc)
    Types: TextFile
    Names: »B«

Derivation

└─⟦180fe333a⟧ Bits:30000405 8mm tape, Rational 1000, SW CATALOG, 10_20_0
└─⟦180fe333a⟧ Bits:30000537 8mm tape, Rational 1000, SW Catalog 10_20_0
    └─⟦5cb1d1d7f⟧ »DATA« 
        └─⟦3b1ee7bd8⟧ 
            └─⟦this⟧ 

TextFile

-- PERFORMANCE MEASUREMENT : operations on boolean arrays
--                           arrays are NOT packed
--                           operations on entire array structure

with Remote_Global;
use Remote_Global; -- control optimization
with Iteration;                         -- obtain stable measurement
with Piwg_Io;                           -- output results

procedure H000002 is  -- main procedure to execute

    Cpu_Time : Duration;           -- CPU time for one feature execution
    Wall_Time : Duration;          -- WALL time for one feature execution
    Check_Times : constant := 100; -- inside loop count and check
    Iteration_Count : Integer;     -- set and varied by ITERATION package
    Stable : Boolean;              -- true when measurement stable
--
-- Boolean array declarations
--
    type Unpacked_Bit_Array is array (Natural range <>) of Boolean;

    Bit_Value_1 : Boolean := Global > 0;
    Bit_Value_2 : Boolean := Global rem 2 = 0;
    Bit_Value_3 : Boolean := Global <= 1;

    subtype Unpacked_16 is Unpacked_Bit_Array (0 .. 15);

    Unpacked_1 : Unpacked_16 :=
       Unpacked_16'(0 | 3 | 6 | 9 | 12 | 15 => Bit_Value_1,
                    1 | 5 | 7 | 11 | 13 => Bit_Value_2,
                    others => Bit_Value_3);
    Unpacked_2 : Unpacked_16 := Unpacked_16'(0 .. 3 => Bit_Value_1,
                                             4 .. 12 => Bit_Value_2,
                                             others => Bit_Value_3);

begin  -- procedure H000002

    Iteration.Start_Control;  -- dummy to bring in pages on some machines

    delay 0.5;  -- wait for stable enviornment on some machines

    Iteration.Initialize (Iteration_Count);

    loop  -- until stable measurement, ITERATION_COUNT increases each time
--
-- Control loop
--
        Iteration.Start_Control;
        for J in 1 .. Iteration_Count loop
            Global := 0;
            for Inside_Loop in 1 .. Check_Times loop
                Global := Global + A_One;
                Remote;
            end loop;
        end loop;
        Iteration.Stop_Control (Global, Check_Times);
--
-- Test loop
--
        Iteration.Start_Test;
        for J in 1 .. Iteration_Count loop
            Global := 0;
            for Inside_Loop in 1 .. Check_Times loop
                Global := Global + A_One;
                Unpacked_1 := Unpacked_2 xor not Unpacked_1;
                Unpacked_2 := Unpacked_1 or Unpacked_2;
                Unpacked_1 := not (Unpacked_1 and Unpacked_2);
                Remote;
            end loop;
        end loop;
        Iteration.Stop_Test (Global, Check_Times);
--
-- Be sure UNPACKED_1 has been computed
--
        if Unpacked_1 (Global rem 16) then
            Global := A_One;
            Remote;
        end if;

        Iteration.Test_Stable (Iteration_Count, Stable);
        exit when Stable;
    end loop;

    Iteration.Feature_Times (Cpu_Time, Wall_Time);
--
-- Printout
--
    Piwg_Io.Piwg_Output
       ("H000002", "Chapter 13", Cpu_Time, Wall_Time, Iteration_Count,
        " Time to perform standard boolean operations on arrays of booleans.",
        " For this test the arrays are NOT PACKED with the pragma 'PACK.'",
        " For this test the operations are performed on the entire array.");

end H000002;