Clipper/FiveWin - Testeo de Perfomance

 
Vista:

Testeo de Perfomance

Publicado por NeoEspecialista (23 intervenciones) el 24/09/2008 22:01:30
Hola a todos,

Sin ánimo de salir a comparar productos, me interesaría muchisimo poder evaluar la perfomance de una serie de procesos.

Tengo una base de datos de 10.000 registros, en la que deseo establecer un filtro y mostrar los resultados ordenados por dos o tres criterios.

La base original es en SQLite, pero aquí se las transformé a DBF.
Pueden descargarla desde:

http://specialapps.software-zone.com/files/parts.zip

La idea del test de perfomance es la siguiente:

a) que traiga todos los registros que el campo Product contenga la palabra "Paper".
b) que lo ordene al mismo tiempo por los campos Manuf (ascendente) y Price (descendente)
c) que despliegue el resultado en un grid, tabla, dbedit o browse

El test en mi máquina fue el siguiente:

Hardware: AMD 64 3.2 Ghz, 512 MB, WXP SP2
Software: NeoBook Corriendo el proceso usando SQLite Client Server

se ejecutó la siguiente instrucción SQL:

select * from parts where product like '%paper%' order by manuf asc, price desc

a) Tiempo de procesamiento sobre el motor de la base de datos: entre 156 y 210 milisegundos.
b) Tiempo de transporte de la red ficticia: 0 milisegundos ( tengo ejecutando el servidor en forma local)
c) Tiempo de actualización del Grid: 280 a 420 milisegundos.

Apreciaría muchisimo si alguien puede realizar un test similar sobre la base de datos DBF, para ver los resultados.

Muchas gracias por adelantado.

Saludos desde Buenos Aires,
NeoEspecialista
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Testeo de Perfomance

Publicado por juanca (1 intervención) el 25/09/2008 01:52:37
lo hice en una 486 con intel pentium 4 y tardó 1 segundo y 37/100.
Saludos.
Juanca
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Testeo de Perfomance

Publicado por NeoEspecialista (23 intervenciones) el 25/09/2008 06:46:55
Gracias Juanca,

Creo que estaría bueno por una cuestión de evaluación, saber con qué software lo hiciste, es decir si usaste sólo Clipper o no... qué versión de Clipper, que RDD usaste, qué tipo de índices creaste, y si usaste alguna librería especial, y si la aplicación final del test era DOS, win16 o win32....

Muchísimas gracias !

NeoEspecialista
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Testeo de Perfomance

Publicado por NeoEspecialista (23 intervenciones) el 26/09/2008 19:02:10
Hola Juanca,

Te cuento que por otras razones, estoy construyendo un manejador de fuentes de datos ODBC de 32 bits, para independizarme de un formato de bases de datos... y poder usar cualquier base de datos ya sea local, de red o de internet.

Para probar, hice una prueba con el manejador de bases DBF, y le indiqué que use la misma base de datos DBF que descargaste.

Le informé que ejecute la siguiente instruccion sql:

select * from parts.dbf where product like '%paper%' order by manuf desc, price asc

y no sólo la ejecutó sin problemas... sino que rapidisimo.. y sin indices..

Olvidense muchachos de los RDD, de los índices y todas esas cosas antiguas... dejen que los manejadores modernos hagan el trabajo..

No estoy seguro si las versiones actuales de Fivewin permite conectarse con controladores ODBC de 32 bits.. pero es la forma mas eficiente...

Saludos desde Buenos Aires,
NeoEspecialista
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Testeo de Perfomance

Publicado por juanca (1 intervención) el 27/09/2008 00:43:48
Fivewin no permite desarrollos en 32 bits, aca hay una manga de mentirosos que dicen que si, pero es imposible.
Saludos.
juanca
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Testeo de Perfomance

Publicado por Gabriel Pascual (913 intervenciones) el 27/09/2008 04:36:25
Neoespecilista:

No se si estas un poquito mal informado, pero te comento que la tecnología ODBC se quedó obsoleta hace como 4 o 5 años.

ODBC es historia antigua y obsoleta, lo de hoy es ADO (ActiveX Data Objects) y si, no solo FiveWin, sino todas la GUIs para xHarbour, y aun el mismo xHarbour en MODO CONSOLA (MS-DOS) te permiten conectarte perfectamente con cualquier motor de base de datos SQL. mismo lenguaje, diferente motor de datos.

Este es un pequeño ejemplo que accede a una tabla access (y cuando digo access, digo SQL Server, MySQL, Informix, etc., todo consiste en tener la cadena de conexion adecuada de www.connectionstrings.com), y añade un registro a la tabla:

#include "ado.ch"
FUNCTION Main()
PUBLIC oConexion
PUBLIC oRecordSet

oConexion := TOleAuto():New("adodb.connection")
oConexion:Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:xEdit2ProyectosADO1 aller.mdb;Persist Security Info=False")
WITH OBJECT oRecordSet := TOleAuto():New("adodb.recordset")
:LockType := adLockOptimistic
:CursorType := adOpenDynamic
:ActiveConnection(oConexion)
:Source := "Select * from Clientes"
:Open()
CLS
cClave := SPACE(5)
cContacto := SPACE(30)
cCargoContacto := SPACE(30)
SET COLOR TO W+/B
@ 1,1 SAY " Clave: " GET cClave
@ 2,1 SAY " Contacto: " GET cContacto
@ 3,1 SAY "Cargo Contacto: " GET cCargoContacto
READ
:AddNew()
:Fields("idCliente"):Value := cClave
:Fields("NombreContacto"):Value := cContacto
:Fields("CargoContacto"):Value := cCargoContacto
oRecordSet:Update()
Wait "Registro añadido"
oConexion:Close()
RETURN Nil

El modelo ADO es muy similar al modelo XBase, puedes incluso hacer informes y hasta un browse de los registros obtenidos.

Hombre, son 32 bits !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Testeo de Perfomance

Publicado por NeoEspecialista (23 intervenciones) el 27/09/2008 09:44:27
Gracias Gabriel,

Aprecio que a pesar de tu tendenciosa forma de dirigirte... este post se empiece a poner interesante...

Como siempre... tienes razón...

ODBC es un mecanismo obsoleto...
NDX, NTX, CDX, SIX, Comix y demás RDD's son.... sin comentarios...

Me complace tener tan buenas noticias de Fivewin en su versión actual (lo dejé de usar en la 1.92) pueda manejar estas estructuras de datos de una manera elegante...

Si tratas de entender la coherencia del primer post hasta este... te darás cuenta que el hilo conductor es aprender.. y mejorar...

No trato de prestigiar un producto sobre otro... no hace falta...

Sirva como ejemplo, que me tomé el trabajo personalmente de migrar un desarrollo de Paul Squires, desarrollador de PowerBasic, para adaptarlo al uso de NeoBook.

De esta manera NeoBook posee la única versión existente en el mundo de un entorno de programación SQLite Client/Server que pongo a tu disposición para que lo testees...

Capaz de procesar grandes volumenes de información... dos, tres o vaya uno a saber... cuantas veces mas rápido que tu querido Clipper....

Ni hablar de ser funcional a programación local, de red, internet o intranet... con acceso por IP, Usuario y Contraseña...

Ahh... y es una base de datos relacional... todo dicho...

Un detalle mas: estos servicios especiales no nativos de NeoBook... son gratis..

Y si de ADO y ADOX se trata... no hay problema... conozco al menos seis desarrollos de estos servicios para NeoBook... que funcionan de maravillas... incluidos los de mi autoría... casi todos gratis...

Gabriel: mejorame los 156 milisegundos de tiempo de procesamiento de una base de datos de 10.000 registros donde hagas una búsqueda parcial dentro de un campo.. para devolver un recordset ( o una tabla filtrada ) ordenada por dos o tres criterios distintos al mismo tiempo... y seguimos hablando de maravillas...

Saludos desde Buenos Aires,
NeoEspecialista
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Testeo de Perfomance

Publicado por Gabriel Pascual (913 intervenciones) el 28/09/2008 18:08:14
Esto hace lo que pides, usando ADS sobre DBFs

Function Main
REQUEST ADS
RddSetDefault("ADS")
AdsSetServerType(1)
AdsSetFileType(2)

AdsConnect("c: est")
AdsCreateSQLStatement("SQLAlias",2)
? SECONDS()
ADSExecuteSQLDirect("select * from parts where product like '%paper%' order by manuf asc, pricedesc")
?SECONDS()
Return

Y te recuerdo, hablando de SQL, quien te da la velocidad de acceso a los datos no es lenguaje de programacion, es el servidor de base de datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Testeo de Perfomance

Publicado por NeoEspecialista (23 intervenciones) el 30/09/2008 02:56:07
Hola Gabriel,

Aprecio leer que conoces una técnica para programar en modo SQL... pero no es lo que te había pedido... de cualquier manera... gracias...

Los conocidos 150 kb que agrega Clipper en todo programa... es entre otras cosas, el motor de la base de datos DBF, es decir... gestiona la base de datos por si mismo... obviamente.. no es SQL.

Estando en este foro planteados tantos interrogantes acerca de si usar NTX, CDX, SIX, Comix o cualquier otros manejadores RDD's, creo que conicidimos que la diferencia de perfomance... es considerable.

Y si como padre espiritual de este foro, conocedor que Fivewin y/o (x) Harbour pueden manejar conexiones ADS, das respuestas acerca del uso de los prehistóricos indices Clipper... entiendo que los usuarios de este foro... estén.. como mínimo... desorientados..

Apreciaría mucho que sl alguna otra vez vuelvo a poner un mensaje acerca de algún tema muy preciso... si deseas participar lo hagas de manera precisa..

Muchísimas gracias !
NeoEspecialista
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar