sábado, 28 de abril de 2012

PL/SQL Nueva mejora en Oracle Database 11g

A partir de la versión 11g de Oracle, se han introducido varias mejoras en el lenguaje de programación PL/SQL. Una de estas mejoras tiene que ver con el tipo de dato PLS_INTEGER, este es similar al INTEGER pero con un eficiencia mucho mayor. En esta versión, Oracle introduce el tipo de dato SIMPLE_INTEGER, el cual ofrece un rendimiento mucho mayor que el PLS_INTEGER.

El siguiente código compara el rendimiento entre estos dos tipos de datos:

DECLARE  

  inicio                       NUMBER;  
  ciclos                     NUMBER := 100000000;  
  l_pls_integer            PLS_INTEGER := 0;  
  l_pls_integer_incr      PLS_INTEGER := 1;  
  l_simple_integer        SIMPLE_INTEGER := 0;  
  l_simple_integer_incr  SIMPLE_INTEGER := 1; 

BEGIN 

  inicio := to_Char(sysdate, 'SS');

  FOR i IN 1 .. ciclos LOOP    
       l_pls_integer := l_pls_integer + l_pls_integer_incr;  
  END LOOP; 

  DBMS_OUTPUT.put_line('PLS_INTEGER: ' || (to_Char(sysdate, 'SS') - inicio) || ' seg'); 

  inicio := to_Char(sysdate, 'SS');

  FOR i IN 1 .. ciclos LOOP    
       l_simple_integer := l_simple_integer + l_simple_integer_incr;  
  END LOOP; 

  DBMS_OUTPUT.put_line('SIMPLE_INTEGER: ' || (to_Char(sysdate, 'SS') - inicio) || ' seg'); 

END;


El resultado al ejecutar este script es el siguiente:


PLS_INTEGER: 5 seg
SIMPLE_INTEGER: 4 seg


Muchos desarrolladores continuamos utilizando la sintaxis antigua de Oracle, sin darnos cuenta de las nuevas mejoras que en cada versión se estan incorporando al lenguaje.

1 comentario:

  1. Hola Mario, estoy iniciándome en PL/SQL y ver esta mejora de Oracle que por la fecha de tu publicación fue hace ya 5 años atrás! excelente reporte, saludos

    ResponderEliminar