FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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.
__________________
Joseph Buttgembach Verde Lima - Perú |
#2
|
|||
|
|||
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
__________________
Joseph Buttgembach Verde Lima - Perú |
#3
|
|||
|
|||
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 |
#4
|
||||
|
||||
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.
__________________
Gami ------------------------------------------------------------------ La necesidad no tolera tardanzas pero mas vale tarde que nunca |
#5
|
|||
|
|||
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...
__________________
Joseph Buttgembach Verde Lima - Perú |
#6
|
|||
|
|||
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 ...
__________________
Joseph Buttgembach Verde Lima - Perú |
#7
|
||||
|
||||
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??
__________________
Gami ------------------------------------------------------------------ La necesidad no tolera tardanzas pero mas vale tarde que nunca |
#8
|
|||
|
|||
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"
__________________
Joseph Buttgembach Verde Lima - Perú |
#9
|
|||
|
|||
DBExpress
__________________
Gabriel |
#10
|
|||
|
|||
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.
__________________
Joseph Buttgembach Verde Lima - Perú |
#11
|
|||
|
|||
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 |
#12
|
|||
|
|||
Ok, gracias por el dato, seguire tu consejo....
__________________
Joseph Buttgembach Verde Lima - Perú |
#13
|
||||
|
||||
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 |
#14
|
|||
|
|||
Gracias por la respuesta.
La Base de Datos que utilice en todas la pruebas es MS SQL Server 2000
__________________
Joseph Buttgembach Verde Lima - Perú |
#15
|
|||
|
|||
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 ???? |
|
|
|