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")
¿Como se usa "profiler" con xharbour en vez de Harbour?
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: ¿Como se usa "profiler" con xharbour en vez de Harbour?
Ricardo,
Este ejemplo funciona bien con ambos Harbour y xHarbour:
profiler.prg
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...
Este ejemplo funciona bien con ambos Harbour y xHarbour:
profiler.prg
Code: Select all
#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
Tambien se pueden analizar los opcode más usados de la máquina virtual...
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: ¿Como se usa "profiler" con xharbour en vez de Harbour?
Esta versión analiza tambien los opcodes de la máquina virtual:
profiler.prg
profiler.prg
Code: Select all
#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
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: ¿Como se usa "profiler" con xharbour en vez de Harbour?
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
-DHB_USE_PROFILER
Construir Harbour usando este go.bat
Code: Select all
set path=c:\bcc582\bin
set HB_USER_CFLAGS=-DHB_USE_PROFILER
win-make.exe
Re: ¿Como se usa "profiler" con xharbour en vez de Harbour?
Muchas gracias, Antonio.
Me pongo manos a la obra.
Un afectuoso saludo.
Me pongo manos a la obra.
Un afectuoso saludo.