Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   BDE igual de rápido q DBExpress (https://www.clubdelphi.com/foros/showthread.php?t=17728)

Oxa78 19-01-2005 16:56:29

BDE igual de rápido q DBExpress
 
Saludos Foro : Tengo una historia, y dice asi : Trabajo con D5 + MS SQL Server 2000 y con el BDE.
Entonces al ver el avance de las versiones del Delphi, decidi avanzar hacia D7 para tomar la tecnología DBExpress en mis proyectos, ya q el BDE esta obsoleto.

Para esto utilizando D7, decidi hacer algunas pruebas comaparativas entre el BDE y DBExpress :

1) Prueba de Grabación : Tome el maestro de Clientes e inserte todos sus datos en otra tabla en blanco de igual estructura, tenia 2,000 registros. Hice esta operacion leyendo registro x registro, haciendo un insert en la tabla en blanco, asignaba los datos y luego ApplyUpdates(0).

Resultado : BDE - 1 minuto 08 segundos
DBEXpress : 1 minuto 12 segundos.

2) Prueba tome una consulta SQL q trabaja con varias tablas, 4 lef joins de mi antiguo sistema.

Resultado : BDE - 0 Segundos DBExpress - 0 segundos


Aparentemente en estos puntos q me parecen relevantes no hay ventaja del DBExpress sobre el BDE.

Quisiera saber si estoy equivocado sobre ests pruebas, seguramente hay otras formas para demostrar la superioridad del DBExpress sobre el BDE.

Como demostrarlo?
Que enfoque tomar para estas pruebas?

Segun la información que lei dice :

OBJETIVOS DE DBExpress : Cuando se planteo la creación de este nuevo sisitema de acceso a datos, se tuvieron en cuenta las siguientes objetivos :

* Velocidad de respuesta.

Quisiera probar este punto : Velocidad de respuesta. Se supone q es mas rápido q el BDE.

Gracias de antemano por sus respuestas.

Oxa78 20-01-2005 00:01:33

Mi estructura de conexión
 
Para las pruebas utilice la siguiente estructura :

BDE : DataBase + Session
Query + DataSetProvider - ClientDataSet + DataSource

DBExpress : SQLConnection
SQLQuery + DataSetProvider - ClientDataSet + DataSource

Mick 20-01-2005 02:10:30

Tu mismo has demostrado la superioridad de dbexpress, en el software cualquier tecnologia nueva y superior que aparece es mas lenta que la anterior. Esto se cumple en el 90% de los casos.

DBExpress intenta abstraer el acceso a los datos de modo que permita conectar a muy distintas bases de datos de forma sencilla y con un interface comun, permitiendo ademas realizar aplicaciones de 3 capas, y muchas mas cosas. Desgraciadamente cuanto mas se abstrae de esta forma, mas lento se vuelve el acceso.

Independientemente de esto la prueba que has hecho es demasiado simple de modo que es logico que te haya dado resultados parecidos en los dos sistemas.

Saludos

argami 20-01-2005 10:05:33

Quizas deberias pensar que el planteamiento para dbExpress es trabajar en sessiones no grabando registro por registro, la verdadera velocidad la veras si haces lo mismo que hiciste pero el applyupdates hazlo al terminar las todos los inserts y siquieres luegos publica cual ha sido la rapidez por registro.

Oxa78 20-01-2005 15:04:21

Muchas gracias por las respuestas :

Segui el consejo de "argami", es decir hice los inserts sobre la tabla y al final, despues de insertar los 2,000 registros hice un solo ApplyUpdates(0), y los resultados fueron :

BDE : 21 segundos
DBExpress : 22 Segundos

Que contradictorio, esperaba que DBExpress supere principalmente en rapidez al BDE, deberia ser el principio basico, segun los conceptos que lei y dice "Velocidad de Respuesta", espero estar equivocado...

Oxa78 20-01-2005 19:25:46

Saludos : Y continuando con la pruebas, ahora tenemos :

Decidi hacer las pruebas sin trafico en la red, es decir hice las pruebas cuando ningun ususario estaba conenectado a la BD ni a la red.

Comparaciones entre DBExpress - BDE - ADO


Resultado promedio obtenido despues de hacer la misma prueba mencionanada en el mensaje anterior, 10 veces :

DBExpress : Lectura : 3.7 seg - Grabación : 11.3 seg Total : 15 seg
BDE : Lectura : 3.6 seg - Grabación : 6.4 seg Total : 10 seg
ADO : Lectura : 6 seg - Grabación : 12.2 seg Total : 18.2

Impresionante ...

Pero el BDE es obsoleto, bueno asi dicen, tendre q cambiar a DBExpress asi sea 50% mas lento. Sinceramente antes de hacer las pruebas de tiempo, probaba la grabación y consultas con DBExpress y me daba la impresión q era mas rápido, pero no es cierto ...

argami 21-01-2005 08:26:03

No se por que pero creo que aqui el mayor tiempo se lo lleva los midas (TclientDataset y TDataSetProvider).

Pero puede que al ser una capa general para varias bases de datos si sea mas lento.

has probado la haciendo los insert's a pelo??

Oxa78 21-01-2005 17:28:45

Finalmente, "BDE sigue siendo mas rápido que DBExpres y ADO"
 
Saludos Foro:

Y continuando con las pruebas, segui el consejo de "argami", descarte los ApplyUpdates para grabar los datos, y utilice Inserts SQL. Los resultados promedio despues de realizar 5 veces la misma operación, son :

DBExpress 11.8 segundos
BDE 11.2 segundos
ADO 20.2 segundos

Finalmente, "BDE sigue siendo mas rápido que DBExpres y ADO"

Gabriel 21-01-2005 18:27:04

DBExpress
 
he localizado esto.

http://www.clubdevelopers.com/delphi...esfb/index.php

Saludos

Oxa78 21-01-2005 22:50:55

una historia distinta
 
Saludos Foro :

Gracias Gabriel por el dato.

Lei el artículo de Julio Nogueira Fandiño "CombatF2D", pero realmente son pruebas distintas, yo utilizo ClientDataSets, el segun el codigo q muestra utiliza directamente la Conexion a la Base de Datos para realizar los Inserts, es decir :

DBExpress : SQLConnection1.ExecuteDirect(SQL);
ASO : ADOConnection1.Execute(xSQL);

Hice algunas pruebas, y resulto lo siguiente : Para 25,000 inserciones de un numero correlativo.

DBExpress : 1.20 minutos
ADO : 1:30 minutos

No pude probar con el BDE ya q me daba error, pero bueno el caso es q las pruebas son por estructuras de conexción distintas.

Parece q la historia termina aqui.

BdeKiller 25-01-2005 22:15:43

Bde vs Dbexpress
 
Creo que no notas diferencia de velocidad porque trabajas con querys en el BDE, prueba a trabajar directamente con una tabla, osea pon un Ttable de unos 2000 registros y recorrelo editando , modificando datos y posteando y haz lo mismo con un dbexpress y clientdataset, yo he hecho esa prueba utilizando el servidor FIREBIRD (interbase) y el BDE es lentiiiiiisimo comparado con dbexpress.

Un saldudo

Oxa78 26-01-2005 15:42:29

Ok, gracias por el dato, seguire tu consejo....

roman 26-01-2005 16:11:52

En todo esto habría que hacer prueba smás exhaustivas y rudas. En los resultados que originalmente mencionaste indicas una prueba en donde ambos métodos dan 0 segundos, lo cual indica no que sea la misma velocidad sino que la prueba es demasiado sencilla como para discernir algo. También sería bueno que indicaras contra qué bases estás haciendo las pruebas pues tanto el BDE como DBExpress manejan varias bases y quizá con unas funcione mejor un accesso y con otras el otro método.

Lo que menciona BdeKiller (curioso nick :) ) me suena muy raro ya que el Bde, al menos con Paradox, a diferencia de servidores de bases reales, trabaja mucho mejor con tablas que con querys. De hecho el Bde no hace uso de los índices definidos en las tablas cuando se hacen consultas SQL, únicamente los utiliza cuando usas componente TTable.

// Saludos

Oxa78 26-01-2005 16:49:05

Gracias por la respuesta.

La Base de Datos que utilice en todas la pruebas es MS SQL Server 2000

BdeKiller 27-01-2005 00:05:17

Tu mismo lo has dicho, el bde va muy bien con tablas paradox,dbase q es para lo que fue diseñado pero si trabajas con objectos ttable (sin usar sql) sobre un servidor sql tiene una sobrecarga terrible, osea funcionar te funciona todo pero mucho más lento que si trabajas con un sql directamente, la prueba es usar una base de datos grande (esto siempre es relativo a los pc's q se utilicen)unos 10000 registros en un servidor remoto (en red local por ejemplo) haz una modificacion de muchos registros con sql en paradox y hazla con sql en un servidor FIREBIRD, MS SQL SERVER .... aqui es la verdadera diferencia, el paradox internamente transfiere toda la tabla y hace el sql en cambio el servidor SQL transferirá solo la tabla con la respuesta (entre otras muchas ventajas), una vez en cliente servidor tenemos varias formas de trabajar:

BDE => OBSOLETO, Borland no dará mas soporte.
Trabajando a nivel de tabla (cursores) sin sql => lentisimo,
Ventaja : practicamente no cambias el codigo q tengas para PARADOX.

DBEXPRESS => componentes totalmente reescritos , muy rápidos
, conectables a muchos servidores de bases de datos de distintos fabricantes, quizá un poco más complicados de gestionar q el BDE

Componentes nativos para los distintos servidores : IBX (INTERBASE) muy rápidos , pero quizá el codigo demasiado dependiente del servidor ????


La franja horaria es GMT +2. Ahora son las 14:11:05.

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