Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Velocidad Firedac Vs ADO (https://www.clubdelphi.com/foros/showthread.php?t=92241)

oscarac 04-09-2017 23:19:51

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..

Casimiro Notevi 05-09-2017 00:04:52

Pero esa prueba es poco práctica, ¿alguna vez hace falta hacer eso "en el mundo real"?
Deberías hacer algunos selects aleatorios, por ejemplo, y cosas así.

oscarac 05-09-2017 00:20:42

Cita:

Empezado por Casimiro Notevi (Mensaje 520824)
Pero esa prueba es poco práctica, ¿alguna vez hace falta hacer eso "en el mundo real"?
Deberías hacer algunos selects aleatorios, por ejemplo, y cosas así.

mmmmm quizá para algunos procesos contable podría ser, y si, también estoy haciendo pruebas con consultas
solo quería saber si alguien mas tiene conocimiento o sabe con ejemplos 100% prácticos si el tema de la velocidad es real

juniorSoft 10-05-2019 18:14:52

La configuración del cursor de los componentes ADO indica que tan rapido o lento se ejecutaran las consultas, pero en mi caso le doy el voto a Firedac, son una evolución de los componentes de acceso a datos muy completo que tienen soluciones sencillas a tareas complejas. En cuanto a la rapidez también influyen muchos factores y los controladores que se estén utilizando.

Saludos,


La franja horaria es GMT +2. Ahora son las 00:25:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi