Listing 1. Ada Equivalent of Java and C++ Program
  
package Perf_Test is
   type Perf_Test is tagged
      record
         Amount : Integer := 0;
      end record;
   type Perf_Test_Ptr is access Perf_Test'Class;
   procedure Add_Amount (This : Perf_Test_Ptr; Val : in Integer);
   function Get_Amount(This : Perf_Test_Ptr) return Integer;
end Perf_Test;
package body Perf_Test is
  procedure Add_Amount (This : Perf_Test_Ptr; Val: in Integer) is
  begin
     This.Amount := This.Amount + Val;
  end Add_Amount;
  function Get_Amount(This : Perf_Test_Ptr) return Integer is
  begin
     return This.Amount;
  end Get_Amount;
end Perf_Test;
with System.OS_Primitives;
with Ada.Text_Io;
with Perf_Test;
procedure perftest is
   NOBJECTS : Integer := 500000;
   Ptarr : array(1..NOBJECTS) of Perf_Test.Perf_Test_Ptr;
   Sum : Integer :=0;
   Start_Time : Duration;
   End_Time   : Duration;
   Time       : Duration;
begin
   Start_Time := System.OS_Primitives.Clock;
   for I in 1..NOBJECTS loop
      Ptarr(I) := new Perf_Test.Perf_Test;
   end loop;
   for I in 1..NOBJECTS loop
      Perf_Test.Add_Amount(Ptarr(I),I);
   end loop;
   for I in 1..NOBJECTS loop
      Sum := Sum + Perf_Test.Get_Amount(Ptarr(I));
   end loop;
   End_Time := System.OS_Primitives.Clock;
   Time := (End_Time - Start_Time) * 1000;
   Ada.Text_Io.Put_Line("Elapsed time in milliseconds for " &
Integer'Image(NOBJECTS) & " objects: " & duration'Image(Time));
   Ada.Text_Io.Put_Line("Objects per millisecond:" &
Integer'Image(NOBJECTS / Integer(Time)));
end perftest;
  
  
  
  
  
  
  
  
  
    Copyright © 1994 - 2014 Linux Journal.  All rights reserved.