Ver Mensaje Individual
  #5  
Antiguo 30-11-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Reputación: 30
jhonny Va camino a la famajhonny Va camino a la fama
Bueno, acabo de hacer una prueba que quizá sea insuficiente pero nos ayudara a crearnos una idea del asunto:

Para realizar esta prueba he utilizado...
  • FB 2.1 Beta 2.
  • Los componentes, IBTable (Para realizar los insert), IBQuery (Para ejecutar el procedimiento almacenado), por consiguiente el IBDatabase y el IBTransaction.
  • Delphi 2007 for Win32.

* En la base de datos he creado lo siguiente:

Tabla
=====

Código SQL [-]
create table ib_vs_sp (
    conteo  integer not null
);

alter table ib_vs_sp add constraint pk_ib_vs_sp primary key (conteo);

Procedimiento almacenado
========================
Código SQL [-]
CREATE PROCEDURE SP_INS_IB_VS_SP 
as
declare variable i integer;
begin
  I = 0;
  while (I <= 100000) do
  begin
    insert into ib_vs_sp (CONTEO) values(:I);
    I = :I + 1;
  end
end

* En Delphi coloque dos botones para ejecutar cada cosa y para tomar los Ticks del procesador... tambien dos labels para mostrar los resultados.

Boton para el .Post del TIBTable
================================
Código Delphi [-]
var
  Ticks, I :Cardinal;
begin
  IBTable1.Close;
  IBTable1.Open;
  
  Ticks := GetTickCount; //Comienza el conteo de Ticks...
  for I := 0 to 100000 do
  begin
    IBTable1.Insert;
    IBTable1CONTEO.AsInteger := I;
    IBTable1.Post;
  end;
  Label2.Caption := IntToStr(GetTickCount - Ticks); //Termina solo teniendo en cuenta el proceso de insercción.

  Label6.Caption := 'Termino';
end;

Boton para ejecutar el procedimiento almacenado
===============================================

Código Delphi [-]
var
  Ticks :Cardinal;
begin
  IBQuery1.Close;
  Ticks := GetTickCount; //Comienza el conteo de Ticks...
  IBQuery1.ExecSQL;//Termina solo teniendo en cuenta el proceso de insercción.
  Label4.Caption := IntToStr(GetTickCount - Ticks);
  Label5.Caption := 'Termino';
end;



* Como pueden ver la prueba la hago en ambos casos, simplemente insertando 100000 registros.


Antes de hacer click en cada boton me cerciore que fuera lo "primero" que hacia el programa y que fuera el "unico" programa en ejecución en mi maquina... Osea, hice click en el primer boton, obtuve el resultado, cerre la aplicación, volví a abrirla e hice click en el otro botón.

Los resultados finales fueron los siguientes:

Con el IBTable
==============
72156 Ticks


Con el SP
=========
64532 Ticks

Bueno, Se que no es una prueba optima pero nos dara alguna idea .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 30-11-2007 a las 17:13:29.
Responder Con Cita