very slow sample program xbrbckg1.prg

Post Reply
User avatar
MarcoBoschi
Posts: 925
Joined: Thu Nov 17, 2005 11:08 am
Location: Padova - Italy
Contact:

very slow sample program xbrbckg1.prg

Post by MarcoBoschi »

Hi everybody
I've tried it it's very very slow I don't understand why. Could someone else test it please?
It seems that at every key pressed it performs a lot of things.
I know very little xbrowse class so I ask it in the group

Many thanks
to all
marco
Marco Boschi
info@marcoboschi.it
User avatar
Euclides
Posts: 144
Joined: Wed Mar 28, 2007 1:19 pm

Re: very slow sample program xbrbckg1.prg

Post by Euclides »

Ciao Marco...
Use this image: https://imagizer.imageshack.com/img923/276/DFYUs0.jpg
Is a quite faster... olga1.jpg is resized and is slow
regards, Euclides
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: very slow sample program xbrbckg1.prg

Post by nageswaragunupudi »

Having a background image slows down.
Every cell movement results in full refresh of the browse.
This is suitable for small browses and data that is already in memory.
Regards

G. N. Rao.
Hyderabad, India
User avatar
MarcoBoschi
Posts: 925
Joined: Thu Nov 17, 2005 11:08 am
Location: Padova - Italy
Contact:

Re: very slow sample program xbrbckg1.prg

Post by MarcoBoschi »

Hi,
I took away what seems superfluous to me.
- RIGHT very slow
- LEFT slow
- UP and DOWN normal but I see flicker across the entire line
- PG UP and PG DOWN not fast but not really bad

take it as a report not as a criticism thanks

Have a nice day

Marco

Code: Select all

#include 'fivewin.ch'
#include 'ord.ch'
#include 'xbrowse.ch'

REQUEST DBFCDX

function Main()

   local oWnd,  oBrw

   USE CUSTOMER SHARED

   DEFINE WINDOW oWnd TITLE 'XBrowse without BackGrounds'

   @ 0, 0 XBROWSE oBrw OF oWnd ;
      ALIAS 'CUSTOMER' AUTOCOLS ;
      CELL LINES ;
      COLOR CLR_BLUE, CLR_WHITE


   SET MESSAGE OF oWnd TO FWVERSION 2007

   oBrw:CreateFromCode()
   oWnd:oClient := oBrw

   ACTIVATE WINDOW oWnd MAXIMIZED


return nil
 
Marco Boschi
info@marcoboschi.it
User avatar
MarcoBoschi
Posts: 925
Joined: Thu Nov 17, 2005 11:08 am
Location: Padova - Italy
Contact:

Re: very slow sample program xbrbckg1.prg

Post by MarcoBoschi »

In method METHOD Paint() CLASS TXBrowse

if I rem DispBegin() and DispEnd()

// local aInfo := ::DispBegin()
and at the end of method I rem

if ::nLen == 0
::EraseData( nFirstRow )
// ::DispEnd( aInfo )
return nil
endif


// ::DispEnd( aInfo )

the problem is even more evident

I use also a dbf of 400 fields and 100 records

I've noticed this method is evocated every time I press VK_RIGHT instead for other key pressed no only in particular conditions
The question is: Is it possible to insert some conditions in the method to make the paint run only when needed?
Have a nice day
Marco
Marco Boschi
info@marcoboschi.it
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: very slow sample program xbrbckg1.prg

Post by nageswaragunupudi »

Commenting out DispBegin() and DispEnd() is not the right thing to do.

Please also see
http://forums.fivetechsupport.com/viewt ... 20&t=38740

WBrowse is the fastest browse. XBrowse is not created to provide a faster alternative, but a feature-rich browse. Still with oBrw:lFastDraw set to .t., speeds are closer to wbrowse though not faster.

It is worth testing xbrowse's performance with a very large table. In this following sample, we create a DBF with One Million Records, 81 fields and recordsize of 1061 bytes and try to browse it.

Code: Select all

#include "fivewin.ch"

REQUEST DBFCDX

function Main()

   field FIRST,LAST,STREET,CITY,STATE,ZIP,HIREDATE,MARRIED,AGE,SALARY
   field FIRST2,LAST2,STREET2,CITY2,STATE2,ZIP2,HIREDATE2,MARRIED2,AGE2,SALARY2
   field FIRST3,LAST3,STREET3,CITY3,STATE3,ZIP3,HIREDATE3,MARRIED3,AGE3,SALARY3
   field FIRST4,LAST4,STREET4,CITY4,STATE4,ZIP4,HIREDATE4,MARRIED4,AGE4,SALARY4
   field FIRST5,LAST5,STREET5,CITY5,STATE5,ZIP5,HIREDATE5,MARRIED5,AGE5,SALARY5
   field FIRST6,LAST6,STREET6,CITY6,STATE6,ZIP6,HIREDATE6,MARRIED6,AGE6,SALARY6
   field FIRST7,LAST7,STREET7,CITY7,STATE7,ZIP7,HIREDATE7,MARRIED7,AGE7,SALARY7
   field FIRST8,LAST8,STREET8,CITY8,STATE8,ZIP8,HIREDATE8,MARRIED8,AGE8,SALARY8

   local aStruct, cCust, cmiln, n, nLen, a, i, c

   cCust    := "c:\fwh\samples\customer.dbf"
   cmiln    := "c:\fwh\samples\custmiln.dbf"

   if File( cmiln )
      USE ( cmiln ) NEW ALIAS "CUST" VIA "DBFCDX"
   else
      aStruct  := FW_DBFSTRUCT( cCust )
      ASize( aStruct, Len( aStruct ) - 1 )
      nLen     := Len( aStruct )
      for i := 2 to 8
         c  := Str( i, 1, 0 )
         for n := 2 to nLen
            a  := AClone( aStruct[ n ] )
            a[ 1 ]   += c
            AAdd( aStruct, a )
         next
      next

      XBROWSER aStruct SHOW SLNUM

      DBCREATE( cmiln, aStruct, "DBFCDX", .t., "CUST" )

      for n := 1 to 2000
         APPEND FROM c:\fwh\samples\customer.dbf ;
         FIELDS FIRST,LAST,STREET,CITY,STATE,ZIP,HIREDATE,MARRIED,AGE,SALARY
      next
      GO TOP
      REPLACE ALL FIRST2 WITH FIRST, LAST2 WITH LAST, CITY2 WITH CITY, STATE2 WITH STATE, ;
                  ZIP2 WITH ZIP, HIREDATE2 WITH HIREDATE, MARRIED2 WITH MARRIED, ;
                  AGE2 WITH AGE, SALARY2 WITH SALARY
      REPLACE ALL FIRST3 WITH FIRST, LAST3 WITH LAST, CITY3 WITH CITY, STATE3 WITH STATE, ;
                  ZIP3 WITH ZIP, HIREDATE3 WITH HIREDATE, MARRIED3 WITH MARRIED, ;
                  AGE3 WITH AGE, SALARY3 WITH SALARY
      REPLACE ALL FIRST4 WITH FIRST, LAST4 WITH LAST, CITY4 WITH CITY, STATE4 WITH STATE, ;
                  ZIP4 WITH ZIP, HIREDATE4 WITH HIREDATE, MARRIED4 WITH MARRIED, ;
                  AGE4 WITH AGE, SALARY4 WITH SALARY
      REPLACE ALL FIRST5 WITH FIRST, LAST5 WITH LAST, CITY5 WITH CITY, STATE5 WITH STATE, ;
                  ZIP5 WITH ZIP, HIREDATE5 WITH HIREDATE, MARRIED5 WITH MARRIED, ;
                  AGE5 WITH AGE, SALARY5 WITH SALARY
      REPLACE ALL FIRST6 WITH FIRST, LAST6 WITH LAST, CITY6 WITH CITY, STATE6 WITH STATE, ;
                  ZIP6 WITH ZIP, HIREDATE6 WITH HIREDATE, MARRIED6 WITH MARRIED, ;
                  AGE6 WITH AGE, SALARY6 WITH SALARY
      REPLACE ALL FIRST7 WITH FIRST, LAST7 WITH LAST, CITY7 WITH CITY, STATE7 WITH STATE, ;
                  ZIP7 WITH ZIP, HIREDATE7 WITH HIREDATE, MARRIED7 WITH MARRIED, ;
                  AGE7 WITH AGE, SALARY7 WITH SALARY
      REPLACE ALL FIRST8 WITH FIRST, LAST8 WITH LAST, CITY8 WITH CITY, STATE8 WITH STATE, ;
                  ZIP8 WITH ZIP, HIREDATE8 WITH HIREDATE, MARRIED8 WITH MARRIED, ;
                  AGE8 WITH AGE, SALARY8 WITH SALARY

      GO TOP
      FW_CdxCreate( "ID,FIRST,LAST,STREET,CITY,STATE,ZIP,HIREDATE,MARRIED,AGE,SALARY" )
      GO TOP
   endif

   XBROWSER ALIAS() TITLE "One Million Records: 81 Fields: Record Len: 1061" ;
   SETUP ( oBrw:aCols[ 1 ]:cEditPicture := "99,999,999", oBrw:lFastDraw := .t., ;
           oBrw:lVThumbTrack := .t., oBrw:lAutosort := .t. )

return nil
 
Image
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: very slow sample program xbrbckg1.prg

Post by nageswaragunupudi »

Next, we will create a 100 record table with 400 fields and see the horizontal scrolling performance.

Code: Select all

#include "fivewin.ch"

REQUEST DBFCDX

function Main()

   local cDbf     := "c:\fwh\samples\customer.dbf"
   local cNew     := "c:\fwh\samples\cust400f.dbf"
   local i,j,n,c,aCol, aData, aRow, aCols, aNew := {}

   if File( cNew )
      USE ( cNew ) NEW ALIAS C400 VIA "DBFCDX"
      ? "Open"
   else
      USE ( cDbf )
      aCols    := DBSTRUCT( cDbf )
      AAdd( aNew, aCols[ 1 ] )

      for i := 1 to 40
         c  := StrZero( i, 2, 0 )
         for n := 2 to 11
            aCol  := AClone( aCols[ n ] )
            aCol[ 1 ] += c
            AAdd( aNew, aCol )
         next
      next

      aData := FW_DbfToArray( nil, nil, { || RECNO() <= 100 } )
      CLOSE DATA

      DBCREATE( cNew, aNew, "DBFCDX", .T., "C400" )
      for each aRow in aData
         DBAPPEND()
         n  := 2
         for i := 1 to 40
            for j := 2 to 11
               FieldPut( n, aRow[ j ] )
               n++
            next
         next
      next
      GO TOP
   endif

   XBROWSER ALIAS() SETUP ( oBrw:nMarqueeStyle := 3, oBrw:lFastDraw := .t. )

return nil
 
Image
Regards

G. N. Rao.
Hyderabad, India
User avatar
Otto
Posts: 4470
Joined: Fri Oct 07, 2005 7:07 pm
Contact:

Re: very slow sample program xbrbckg1.prg

Post by Otto »

Dear Mr. Rao,
Thank you for your sample.
Please show us how we can implement a column search; I mean that I enter a column name and browser repositions vertically.
Best regards,
Otto
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org

********************************************************************
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: very slow sample program xbrbckg1.prg

Post by nageswaragunupudi »

Code: Select all

oBrw:GoToCol( <column_name> )
Regards

G. N. Rao.
Hyderabad, India
User avatar
MarcoBoschi
Posts: 925
Joined: Thu Nov 17, 2005 11:08 am
Location: Padova - Italy
Contact:

Re: very slow sample program xbrbckg1.prg

Post by MarcoBoschi »

Thank You Mr Rao
8)
Marco Boschi
info@marcoboschi.it
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Re: very slow sample program xbrbckg1.prg

Post by Enrico Maria Giordano »

Ok, but this sample is still slow:

Code: Select all

#include 'fivewin.ch'
#include 'ord.ch'
#include 'xbrowse.ch'

REQUEST DBFCDX

function Main()

   local oWnd,  oBrw

   USE CUSTOMER SHARED

   DEFINE WINDOW oWnd TITLE 'XBrowse without BackGrounds'

   @ 0, 0 XBROWSE oBrw OF oWnd ;
      ALIAS 'CUSTOMER' AUTOCOLS ;
      CELL LINES ;
      COLOR CLR_BLUE, CLR_WHITE


   SET MESSAGE OF oWnd TO FWVERSION 2007

   oBrw:CreateFromCode()
   oWnd:oClient := oBrw

   ACTIVATE WINDOW oWnd MAXIMIZED


return nil
EMG
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Re: very slow sample program xbrbckg1.prg

Post by Enrico Maria Giordano »

Ok, with lFastDraw set to .T. even that sample become fast. What is the advantage of setting lFastDraw to .F.?

EMG
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: very slow sample program xbrbckg1.prg

Post by nageswaragunupudi »

Image
Regards

G. N. Rao.
Hyderabad, India
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Re: very slow sample program xbrbckg1.prg

Post by Enrico Maria Giordano »

The question was: what is the advantage of setting lFastDraw to .F.? And the answer is? :-)

EMG
Post Reply