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; for I := 0 to 100000 do
begin
IBTable1.Insert;
IBTable1CONTEO.AsInteger := I;
IBTable1.Post;
end;
Label2.Caption := IntToStr(GetTickCount - Ticks);
Label6.Caption := 'Termino';
end;
Boton para ejecutar el procedimiento almacenado
===============================================
Código Delphi
[-]
var
Ticks :Cardinal;
begin
IBQuery1.Close;
Ticks := GetTickCount; IBQuery1.ExecSQL; 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
.