Files
harbour-core/tests/memmgr.prg
Viktor Szakats 58faf91453 2016-01-14 19:17 UTC+0100 Viktor Szakats (vszakats users.noreply.github.com)
* *
    % remove brandings and homepage [1] from copyright header. Pass 1 - using script.
      [1] nobody has access to it anymore AFAIK - and it's also just
          a redirect since long
    ! update url in copyright header
    ; this should make the diff between 3.4 and 3.2 easier to manage
2016-01-14 19:18:17 +01:00

106 lines
2.1 KiB
Plaintext

/*
* a small memory manager test code
*/
#include "simpleio.ch"
#define N_LOOPS 100000
#ifdef __HARBOUR__
#include "hbmemory.ch"
#endif
PROCEDURE Main()
LOCAL nCPUSec, nRealSec, i, a
#ifdef __HARBOUR__
IF Memory( HB_MEM_USEDMAX ) != 0
?
? "Warning !!! Memory statistics enabled."
ENDIF
#endif
?
? Date(), Time(), Version() + build_mode() + ", " + OS()
?
? "testing single large memory blocks allocation and freeing..."
nRealSec := Seconds()
nCPUSec := hb_SecondsCPU()
FOR i := 1 TO N_LOOPS
a := Space( 50000 )
NEXT
a := NIL
nCPUSec := hb_SecondsCPU() - nCPUSec
nRealSec := Seconds() - nRealSec
? " CPU time:", nCPUSec, "sec."
? "real time:", nRealSec, "sec."
?
? "testing many large memory blocks allocation and freeing..."
nRealSec := Seconds()
nCPUSec := hb_SecondsCPU()
a := Array( 100 )
FOR i := 1 TO N_LOOPS
a[ i % 100 + 1 ] := Space( 50000 )
IF i % 200 == 0
AFill( a, "" )
ENDIF
NEXT
a := NIL
nCPUSec := hb_SecondsCPU() - nCPUSec
nRealSec := Seconds() - nRealSec
? " CPU time:", nCPUSec, "sec."
? "real time:", nRealSec, "sec."
?
? "testing large memory block reallocation with intermediate allocations..."
? "Warning!!! some compilers may badly fail here"
WAIT
nRealSec := Seconds()
nCPUSec := hb_SecondsCPU()
a := {}
FOR i := 1 TO N_LOOPS
AAdd( a, {} )
IF i % 1000 == 0
?? i
ENDIF
NEXT
nCPUSec := hb_SecondsCPU() - nCPUSec
nRealSec := Seconds() - nRealSec
? " CPU time:", nCPUSec, "sec."
? "real time:", nRealSec, "sec."
WAIT
RETURN
FUNCTION build_mode()
#ifdef __CLIP__
RETURN " (MT)"
#else
#ifdef __XHARBOUR__
RETURN iif( hb_MultiThread(), " (MT)", "" ) + ;
iif( Memory( HB_MEM_USEDMAX ) != 0, " (FMSTAT)", "" )
#else
#ifdef __HARBOUR__
RETURN iif( hb_mtvm(), " (MT)", "" ) + ;
iif( Memory( HB_MEM_USEDMAX ) != 0, " (FMSTAT)", "" )
#else
#ifdef __XPP__
RETURN " (MT)"
#else
RETURN ""
#endif
#endif
#endif
#endif
#if __HARBOUR__ < 0x010100
FUNCTION hb_mtvm()
RETURN .F.
#endif