System Packages Oracle PLSQL

SQL> create or replace procedure SIMPLE_PARM(p number) is
  2   x number;
  3   begin
  4       null;
  5   end;
  6  /
Procedure created.
SQL>
SQL> create or replace type rec is object
  2   ( a number,
  3   b number,
  4   c varchar2(30));
  5  /
SQL>
SQL> create or replace type rec_list is table of rec;
  2  /
Type created.
SQL>
SQL> create or replace procedure big_parm(p Rec_list) is
  2   x number;
  3   begin
  4       null;
  5   end;
  6  /
Procedure created.
SQL>
SQL>
SQL>
SQL> declare
  2   x rec_list := rec_list();
  3   t1 number;
  4   t2 number;
  5   begin
  6       x.extend(50000);
  7       for i in 1 .. 50000 loop
  8          x(i) := rec(i,i,rpad(i,30));
  9       end loop;
 10       t1 := dbms_utility.get_time;
 11       for i in 1 .. 500000 loop
 12          simple_parm(i);
 13       end loop;
 14       t2 := dbms_utility.get_time;
 15       dbms_output.put_line('Simple: '||(t2-t1));
 16       for i in 1 .. 500000 loop
 17          big_parm(x);
 18       end loop;
 19       t1 := dbms_utility.get_time;
 20       dbms_output.put_line('Collection:'||(t1-t2));
 21   end;
 22  /
Simple: 19
Collection:15
PL/SQL procedure successfully completed.