recientemente instale Xe7 y quise comprobar la conexión Firedac (Natica segun entiendo), me habían dicho que es mucho mas rápida, asi que hice una prueba simple
me conecté mediante Firedac y Ado a una misma base de datos, accediendo a la informacion de una tabla con 38,900 registros
aqui los comentarios
En modo diseño, la conexión de Firedac demoro menos de 1 segundo, mientras que Ado demoro unos 4 segundos
hice un barrido de la data y mientras en Ado se demoro 9 segundos, en Firedac solo demoro 2
preguntas...
que tan potente es Firedac comparado con Ado o con otros "componentes" para acceder o recopilar informacion en bases de datos grandes?
esta fue la prueba que hice
Código Delphi
[-]unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, FireDAC.Stan.Intf, FireDAC.Stan.Option,
FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def,
FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Phys.MSSQL,
FireDAC.Phys.MSSQLDef, FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf,
FireDAC.DApt, Vcl.StdCtrls, Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client,
Vcl.Grids, Vcl.DBGrids, Data.Win.ADODB, FireDAC.VCLUI.Wait, FireDAC.Comp.UI,
Vcl.ExtCtrls;
type
TForm1 = class(TForm)
FDConnection1: TFDConnection;
FDQuery1: TFDQuery;
Button1: TButton;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
FDGUIxWaitCursor1: TFDGUIxWaitCursor;
DBGrid2: TDBGrid;
DataSource2: TDataSource;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
Button2: TButton;
Timer1: TTimer;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
FDConnection1.Connected := False;
FDConnection1.Connected := True;
FDQuery1.OpenOrExecute;
Label1.Caption := TimeToStr(time);
FDQuery1.First;
while not FDQuery1.eof do
Begin
FDQuery1.Next;
End;
Label2.Caption := TimeToStr(time);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ADOConnection1.Connected := False;
ADOConnection1.Connected := True;
ADOQuery1.Open;
adoQuery1.First;
Label3.Caption := TimeToStr(time);
while not adoQuery1.eof do
Begin
adoQuery1.Next;
End;
Label4.Caption := TimeToStr(time);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ADOConnection1.Connected := False;
FDConnection1.Connected := False;
end;
end.
aunque cambiando esta parte
visto en esta pagina
http://edn.embarcadero.com/article/27790
Código Delphi
[-]
ADOQuery1.First;
Label5.Caption := TimeToStr(time);
while Not ADOQuery1.Recordset.EOF do
begin
ADOQuery1.Recordset.Movenext;
end;
Label6.Caption := TimeToStr(time);
Con ADO demoro menos de 1 segundo, aunque el registro no se mueve..