FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Rendimiento de ADS
Posts: 365
Joined: Sat Oct 08, 2005 07:59 PM
Rendimiento de ADS
Posted: Mon Oct 22, 2007 05:08 PM

Estoy probando ADS (versi贸n de evaluaci贸n para 2 usuarios). Tengo una LAN de tres ordenadores, uno de los cuales contiene los datos del programa. Los dem谩s leen de 茅l.

Mi prueba consiste en aplicar un SET FILTER para "TALLER"$CLIENTE en una tabla de unos 7000 registros y presentar los resultados en un TxBrowse(). Resultados:

Sin activar ADS:
Un usuario. Tiempo de acceso: 3 seg (muy bueno)
Dos usuarios - 40 SEGS!!!

Activando ADS:
Un usuario: 14 segundos
Dos usuarios: 14 segundos

Utilizar ADS mejora la respuesta en el caso de dos usuarios pero todav铆a me parece bastante lenta, teniendo en cuenta que la tabla no es especialmente grande. 驴Alguien tiene experiencia con ADS y me puede decir si estos tiempos son mejorables y c贸mo?

Gracias,
Rafael

Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Rendimiento de ADS
Posted: Mon Oct 22, 2007 08:14 PM
Hola Rafael

Yo utilizo de esta manera los filtros

cFiltro := 'taller$ "'+Cliente + '"'
//siendo cliente un variable
//o sea deberia quedar asi taller $ "pedro"

AdsSetAof( cFiltro )


para sacar filtro

AdsClearAof()


Espero que te sirva
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 365
Joined: Sat Oct 08, 2005 07:59 PM
Rendimiento de ADS
Posted: Mon Oct 22, 2007 08:30 PM

Patricio: Muchas gracias por su comentario. Yo utilizo una sintaxis similar
(por cierto, en mi ejemplo "TALLER"$CLIENTE prenetnde filtrar todos los clientes como "TALLERES LOPEZ", "GRANDES TALLERES XXX", etc; "Taller" el el String a buscar; CLIENTES es el campo; pero es un detalle sin importancia)

Mi preocupaci贸n es que el filtro con ADS resulta mucho m谩s lento de lo que yo supon铆a. Yo esperaba una respuesta en menos de un segundo y se toma casi 15!. A t铆 tambi茅n te responde tan lentamente? Puede ser porque yo estoy utilizando la versi贸n de demo? O hay alg煤n ajuste que he olvidado?

Rafael

Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Rendimiento de ADS
Posted: Tue Oct 23, 2007 01:20 PM

Rafael,

驴podr铆as postear el trozo de c贸digo que usas para hacer las pruebas? Es para ver si est谩 correctamente parametrizado.

Un punto a destacar es que una vez que consumi贸 los 15 segundos iniciales, el resto del tiempo es (deber铆a ser) instantaneo, ya que ya ha creado el filtro como mapa en el servidor, lo que no ocurre con versiones no cliente servidor.

Un saludo,

Carlos

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
鈥淚f you think education is expensive, try ignorance"
Posts: 365
Joined: Sat Oct 08, 2005 07:59 PM
Rendimiento de ADS
Posted: Tue Oct 23, 2007 03:11 PM
Carlos:
Me es un poco dif铆cil postear todo el c贸digo porque est谩 bastante imbricado en el programa, pero no tiene ning煤n misterio. En resumen es as铆:
.... etc
oBrw := TcBrowse():New(...)   // El browse de clientes. Tiene seis columnas.
Redefine Get   cBuscar Of Self Valid ::Filtrar(cBuscar, oBrw)   // Un campo get para buscar el cliente.  Lo busca al pulsar intro
.... etc
//--------------------------------------------------------------------
Method Filtrar(cBuscar, oBrw)  // Presentar todos los clientes que CONTENGAN el string cBuscar y refrescar el Browse oBrw 
Select CLIENTES
cFiltro := "'"+Alltrim(Upper(cBuscar)) + "' $ Upper(NOMBRE)"
bFiltro := cToBlock(cFiltro)
DbSetFilter(bFiltro, cFiltro)
CLIENTES->(dbGoTop())
oBrw:GoTop()
oBrw:Refresh()
Return .T.


No utilizo Data Dictionary ni ninguna otra caracter铆stica avanzada de ADS. Tan solo lo he instalado en el PC que tiene los datos y he copiado las tres DLLs a las carpetas de programa en todos los ordenadores.

Efectivamente, al pulsar Intro el primer registro filtrado aparece inmediatamente en la primera l铆nea del Browse. El resto de l铆neas se mantienen como antes, o sea, sin filtrar. Al cabo de los 15 segundos, se refresca el Browse: Desaparecen de golpe las lineas no relevantes y aparecen de golpe los -por ejemplo- cuatro o cinco registros restantes que s铆 cumplen la condici贸n de filtro.

Antes de comprar la versi贸n comercial de ADS s贸lo quiero saber si este comportamiento es normal para la versi贸n de prueba y la de pago es m谩s r谩pida o si es que estoy haciendo algo mal.

Gracias por vuestro tiempo

Rafael
Posts: 840
Joined: Thu Oct 13, 2005 07:05 PM
Rendimiento de ADS
Posted: Thu Oct 25, 2007 10:03 PM

Rafael:

Esta mal tu filtro:

tienes que hacer esto:

cFiltro := "'TALLER' $ CLIENTE"
bFiltro := "{||"+cFiltro+"}"

Estoy asumiendo que estas buscando la palabra "TALLER" dentro del campo CLIENTE, nota como solo la palabra taller lleva comillas sencillas, y que toda la expresion de filtro es una sola cadena.

Ahora, puedes usar la funcion AdsSetAof() o bien un DBSETFILTER() de esta manera:

alias->(DBSETFILTER(&bFiltro,cFiltro)

Saludos desde Chile, la proxima semana en Buenos Aires.

Saludos

R.F.

Continue the discussion