Ver Mensaje Individual
  #1  
Antiguo 04-09-2017
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Reputación: 20
oscarac Va por buen camino
Velocidad Firedac Vs ADO

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
    { Private declarations }
  public
    { Public declarations }
  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..
__________________
Dulce Regalo que Satanas manda para mi.....

Última edición por oscarac fecha: 04-09-2017 a las 23:27:10.
Responder Con Cita