¿Como se usa "profiler" con xharbour en vez de Harbour?

¿Como se usa "profiler" con xharbour en vez de Harbour?

Postby rlblanco » Thu Oct 24, 2013 5:28 pm

Hola a todos.

Me gustaría optimizar el funcionamiento de mis aplicaciones y he visto en el foro algunos temas sobre el uso de Profiler.
He colocado las funciones oportunas siguiendo algunos ejemplos, pero no se como poder ver la información generada una vez terminada la captura de la zona del programa a analizar.

¿ Alguien podría mostrarme algún ejemplo de como hacerlo para xharbour+FWH 1301?

Muchas gracias.

Uso :
WINDOWS 7 Professional
xHarbour Compiler build 1.2.1 (SimpLex) (Rev. 9656)
FWH 1301
RECURSOS CON PELLES C ( archivo del tipo "res")
rlblanco
 
Posts: 33
Joined: Wed Apr 16, 2008 6:24 pm

Re: ¿Como se usa "profiler" con xharbour en vez de Harbour?

Postby Antonio Linares » Fri Oct 25, 2013 8:37 am

Ricardo,

Este ejemplo funciona bien con ambos Harbour y xHarbour:

profiler.prg
Code: Select all  Expand view
#include "FiveWin.ch"
#include "xbrowse.ch"

function main()

   local aValues := {}, n

   __SetProfiler( .T. )

   for n := 1 to __dynsCount()
      if __dynsIsFun( n )
         AAdd( aValues, { __dynsGetName( n ), __dynsGetPrf( n )[ 1 ], __dynsGetPrf( n )[ 2 ] } )
      endif
   next

   XBROWSER ASort( aValues,,, { | x, y | x[ 1 ] < y[ 1 ] } ) ;
      TITLE "Profiler results" ;
      SETUP BrwSetup( oBrw ) AUTOSORT

return nil

function BrwSetup( oBrw )

   oBrw:aCols[ 1 ]:cHeader = "Name"
   oBrw:aCols[ 2 ]:cHeader = "Times"
   oBrw:aCols[ 3 ]:cHeader = "Time"
   
return nil


El Harbour ó xHarbour que se use tiene que haber sido construido con soporte de profiler, ó los resultados apareceran todos ceros.

Tambien se pueden analizar los opcode más usados de la máquina virtual...
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41323
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: ¿Como se usa "profiler" con xharbour en vez de Harbour?

Postby Antonio Linares » Fri Oct 25, 2013 8:50 am

Esta versión analiza tambien los opcodes de la máquina virtual:

profiler.prg
Code: Select all  Expand view
#include "FiveWin.ch"
#include "xbrowse.ch"

function main()

   local aValues := {}, n

   __SetProfiler( .T. )

   for n := 1 TO __dynsCount()
      if __dynsIsFun( n )
         AAdd( aValues, { __dynsGetName( n ), __dynsGetPrf( n )[ 1 ], __dynsGetPrf( n )[ 2 ] } )
      endif
   next

   XBROWSER ASort( aValues,,, { | x, y | x[ 1 ] < y[ 1 ] } ) ;
      TITLE "Profiler results" ;
      SETUP BrwSetup( oBrw, "Name" ) AUTOSORT

   aValues = {}

   for n = 0 to __opCount() - 1
      AAdd( avalues, { n, __opGetPrf( n )[ 1 ], __opGetPrf( n )[ 1 ] } )
   next      

   XBROWSER ASort( aValues,,, { | x, y | x[ 1 ] < y[ 1 ] } ) ;
      TITLE "Profiler opcodes results" ;
      SETUP BrwSetup( oBrw, "opcode" ) AUTOSORT

return nil

function BrwSetup( oBrw, cType )

   oBrw:aCols[ 1 ]:cHeader = cType
   oBrw:aCols[ 2 ]:cHeader = "Times"
   oBrw:aCols[ 3 ]:cHeader = "Time"
   
return nil  
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41323
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: ¿Como se usa "profiler" con xharbour en vez de Harbour?

Postby Antonio Linares » Fri Oct 25, 2013 10:01 am

Para poder usar el profiler hay que construir la librería hbvm.lib de Harbour con el siguiente flag:

-DHB_USE_PROFILER

Construir Harbour usando este go.bat
Code: Select all  Expand view
set path=c:\bcc582\bin
set HB_USER_CFLAGS=-DHB_USE_PROFILER
win-make.exe
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41323
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: ¿Como se usa "profiler" con xharbour en vez de Harbour?

Postby rlblanco » Fri Oct 25, 2013 5:21 pm

Muchas gracias, Antonio.

Me pongo manos a la obra.

Un afectuoso saludo.
rlblanco
 
Posts: 33
Joined: Wed Apr 16, 2008 6:24 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 10 guests